2016-07-31 227 views
1

我正在嘗試編寫名爲IDL腳本的腳本,例如a.pro。在這個腳本的最後,我想執行shell腳本b。我正在嘗試使用spawn命令來做到這一點。但我也需要從IDL腳本傳遞一些參數(變量值)給這個shell腳本。我怎樣才能做到這一點?從IDL腳本將參數傳遞給shell腳本

+0

你可以在字符串上使用'EXECUTE'函數並以這種方式傳遞變量。 –

+0

[tag:idl]標籤用於接口描述語言。 – asynchronos

回答

3

您發送給SPAWN的命令只是一個字符串;以任何你喜歡的方式創建字符串。我更喜歡使用C風格的格式代碼:

filename = 'output.log' 
n_lines = 50 
cmd = string(n_lines, filename, format='(%"tail -%d %s")') 
; cmd = 'tail -50 output.log' 
spawn, cmd, output 
1

有兩種方法來調用SPAWN來完成你想要的東西:


調用腳本,b,直接:

spawn, ['b', arg1, arg2], /noshell 

優點:

  • 更快,因爲它不會創建bash的新實例。
  • 更安全,因爲您不必轉義或引用參數。

格式爲bash終端字符串:

script_path = 'b' 
cmd = strjoin([script_path, arg1, arg2], ' ') 
spawn, cmd 

優點:

  • 有時更容易,因爲你可以使用的格式,你已經習慣了從bash看到。

在大多數情況下,你應該直接調用腳本和其他程序(除了IDL)與spawn, /noshell,因爲速度得到很大的提高,而且安全性也相當可觀。