2017-06-03 42 views
-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 
+1

参照を行い、$HOMEを使用するには、[条件文を期待するにはbashスクリプト変数を使用する方法] (https://stackoverflow.com/q/11131318/3776858) – Cyrus

+0

@Cyrus、私はこの質問を投稿する前に答えから何か手がかりを見つけられませんでした。 –

+0

[Expectスクリプトの環境変数へのアクセス方法](https://stackoverflow.com/questions/12695474/how-to-access-environment-variables-in-an-expect-script)の可能な複製 – mihir6692

答えて

0

プレフィックスそれがこの
$env(HOME)

関連する問題