2

単一のシェル スクリプトを使用して一連のコマンドを実行したいと考えています。これらのコマンドには、scp、cd、tar、date、expect、spawn などがあります。

#!/bin/sh または #!/bin/bash を宣言すると、期待されるコマンドはどれも機能しません-これは理解できます。#!/usr/bin/expect -f を宣言すると、cd、tar、日付が機能しません。これも予想されることです (しゃれなし)。

単一のインタープリターを使用してこれらすべてのコマンドを使用することは可能ですか、それとも途中で別のインタープリターを宣言できますか? サブシェルに飛び込みましたが、うまくいきませんでした。

4

2 に答える 2

3

expectシェルの here-doc 経由でコマンドをフィードできます。

#!/bin/sh
# shell code....
expect <<EOS
# expect code...
EOS
# back to shell code...
于 2013-02-07T03:35:54.170 に答える
1

実際、expectの下で実行すると、Tclのすべてのコマンドを使用できるため、次のようになります。

  • 「cd」は内蔵されているので動作します
  • Tcl clockコマンドを使用できるため、「date」は必要ありません。clock format [clock seconds]
  • 「tar」およびその他の外部コマンドは、execを使用して実行できます。exec tar cf stuff.tar file1 file2 file3

データとコントロールの構成要素はshやbashとは異なりますが、慣れればより強力になります。

于 2013-02-07T08:39:19.757 に答える