私は Bash スクリプトを作成し、Expect を使用して sftp を実行しています。今度は、Expect ブロックで、条件ステートメントで Bash 変数にアクセスしたいと考えています。しかし、私はそうすることができません。どうすればこれを行うことができますか?
また、このスクリプトの実行は C プログラムから制御され、出力をログ ファイルにリダイレクトします (これも動的です)。それを行って、標準出力のすべての出力を抑制できますか。
コードは次のとおりです。
!/usr/bin/bash
host=$1
user=$2
pass=$3
action=$4
path=$5
echo "Starting...."
function doAction {
strAction="\""$action"\""
echo $strAction
/usr/bin/expect <<EOF > logfile.txt
**set bashaction $strAction**
spawn sftp $user@$host
expect "password:"
send "$pass\r"
expect"sftp>"
send "cd $path\r"
**if {$bashaction == "TEST"} {**
expect "sftp>"
send "prompt\r"
}
expect "sftp>"
send <sftp command>
expect "sftp>"
send_user "quit\n"
exit
EOF
}
doAction
echo "DONE....."
1.の場合、代わりにExpectスクリプトを使用すると機能しました。ロギングの問題については、使用log_user 0
してlog_file -a <file>
助けました。