在linux shell脚本中使用多个命令解释器

时间:2013-02-07 03:25:54

标签: linux shell expect

我想使用单个shell脚本来执行一堆命令。其中一些命令包括:​​scp,cd,tar,date,expect,spawn。

当我声明#!/ bin / sh或#!/ bin / bash时,没有任何expect命令工作 - 这是可以理解的。当我声明#!/ usr / bin / expect -f然后cd,tar,date不起作用 - 我想这也是预期的(没有双关语)。

是否可以使用单个解释器使用所有这些命令,或者我可以在途中声明另一个命令吗?我潜入了子弹,但没有成功。

2 个答案:

答案 0 :(得分:3)

您可以通过shell here-doc:

将命令提供给expect
#!/bin/sh
# shell code....
expect <<EOS
# expect code...
EOS
# back to shell code...

答案 1 :(得分:1)

实际上,如果您在预期下运行,则可以使用all the commands of Tcl,因此:

  • “cd”将起作用,因为它是内置的
  • 不需要“date”,因为您可以使用Tcl clock命令,例如。 clock format [clock seconds]
  • “tar”和其他外部命令可以用exec运行,例如。 exec tar cf stuff.tar file1 file2 file3

数据和控件结构与sh或bash不同,但一旦习惯它们就会更强大。