SSHログイン用にExpectスクリプトを実行する必要がありますが、コマンド実行時にargvを提供するファイルを生成する必要があります。
次のスクリプトファイルを実行すると生成されます。
#!/usr/bin/expect
set file [lindex $argv 0]
set date [exec date "%Y-%m-%d"]
spawn sh -c "touch output-$file-$date.csv"
コマンド出力
[root@centseven ~]# ./demo A
spawn sh -c touch output-A-2017-September-21.csv
[root@centseven ~]# ll output-
output--2017-September-21.csv output-A-2017-September-21.csv
ただし、argvを使用するとスクリプトが機能し、ファイルが生成されます。私が望むのは、スクリプトの実行中にargvが提供されない場合は./demo
エラーが発生し、argvはAまたはBでなければならず、それ以外は何もしてはいけないということです。
可能ですか?
ベストアンサー1
上のどこかに次のものを追加します。
if {[llength $argv] == 0} {
puts stderr "Usage: $argv0 file"
exit 1
}
llength(n)
リストの長さの手順の詳細については、参考資料を参照してください。A
orは式をB
単一の引数としてif
受け入れるのでexpr(n)
(非常に奇妙な制限)
if {[llength $argv] != 1} {
puts stderr "Usage: $argv0 (A|B)"
exit 1
}
set firstarg [lindex $argv 0]
if {!($firstarg eq "A" || $firstarg eq "B")} {
puts stderr "Usage: $argv0 (A|B)"
exit 1
}