我想使用單個shell腳本來執行一堆命令。其中一些命令包括:scp,cd,tar,date,expect,spawn。在linux shell腳本中使用多個命令解釋器
當我聲明#!/ bin/sh或#!/ bin/bash時,任何expect命令都不起作用 - 這是可以理解的。當我聲明#!/ usr/bin/expect -f然後cd,tar,date不起作用 - 我想這也是預期的(無雙關)。
是否可以使用所有這些命令使用單個解釋器,或者我可以一路宣佈另一個?我潛入子彈,但沒有成功。
我想使用單個shell腳本來執行一堆命令。其中一些命令包括:scp,cd,tar,date,expect,spawn。在linux shell腳本中使用多個命令解釋器
當我聲明#!/ bin/sh或#!/ bin/bash時,任何expect命令都不起作用 - 這是可以理解的。當我聲明#!/ usr/bin/expect -f然後cd,tar,date不起作用 - 我想這也是預期的(無雙關)。
是否可以使用所有這些命令使用單個解釋器,或者我可以一路宣佈另一個?我潛入子彈,但沒有成功。
您可以通過shell這裏-DOC喂expect
命令:
#!/bin/sh
# shell code....
expect <<EOS
# expect code...
EOS
# back to shell code...
+1。你只需要小心引用,以確保bash不會試圖擴大你的期望變量。引用heredoc分隔符有助於實現這一點:'expect <<'EOS'' - http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents –
謝謝大家你的。我現在有很多選擇。 – jasonsfa98
其實,如果你運行在期待,你有all the commands of Tcl使用,因此:
clock format [clock seconds]
exec tar cf stuff.tar file1 file2 file3
數據和控制結構不同於sh或bash,但是一旦習慣了它們,它就會更強大。
我建議爲每個源文件編寫一種語言。將期望的代碼放入預期失敗並從Bourne或Bash腳本中調用。你可以只有一個[shebang](http://en.wikipedia.org/wiki/Shebang_(Unix))行。 – Johnsyweb