我想使用单个 shell 脚本来执行一堆命令。其中一些命令包括:scp、cd、tar、date、expect、spawn。
当我声明 #!/bin/sh 或 #!/bin/bash 时,任何期望命令都不起作用 - 这是可以理解的。当我声明 #!/usr/bin/expect -f 然后 cd, tar, date 不起作用 - 我想这也是可以预料的(没有双关语)。
是否可以使用单个解释器使用所有这些命令,或者我可以在此过程中声明另一个?我潜入子壳,但没有成功。
您可以expect
通过 shell here-doc 提供命令:
#!/bin/sh
# shell code....
expect <<EOS
# expect code...
EOS
# back to shell code...
实际上,如果您在 expect 下运行,您将拥有Tcl 的所有命令,因此:
clock format [clock seconds]
exec tar cf stuff.tar file1 file2 file3
数据和控制结构与 sh 或 bash 不同,但一旦你习惯了它们就会更强大。