2016-07-31 178 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,因为速度得到很大的提高,而且安全性也相当可观。