-1
expect条件文で変数を使用しようとすると、動作しないことがわかります。expect条件文でコマンドを実行する方法
結果:私は私のスクリプトの問題は、ユーザー名を取得しますが、ユーザ名を設定されていません見つける
#!/usr/bin/expect -f
set timeout -1
set password qianyu
set app [lindex $argv 0]
set username `whoami`
spawn sudo apt-get install $app
expect {
"*password for ${username}*" { send "${password}\r" }
}
expect eof
--update--
:以下
[email protected]:~/bin$ ./expectinstall.sh iotop
spawn sudo apt-get install iotop
[sudo] password for qianyu:
私のスクリプトコマンドで`...`
。私は[exec ...]
に変更し、うまく動作します。
修正スクリプト:例として$env(...)
、と
#!/usr/bin/expect -f
set timeout -1
set password qianyu
set app [lindex $argv 0]
set username [exec whoami]
spawn sudo apt-get install -y $app
expect {
"*password for ${username}*" { send "${password}\r"; }
}
expect eof
参照を行い、
$HOME
を使用するには、[条件文を期待するにはbashスクリプト変数を使用する方法] (https://stackoverflow.com/q/11131318/3776858) – Cyrus@Cyrus、私はこの質問を投稿する前に答えから何か手がかりを見つけられませんでした。 –
[Expectスクリプトの環境変数へのアクセス方法](https://stackoverflow.com/questions/12695474/how-to-access-environment-variables-in-an-expect-script)の可能な複製 – mihir6692