我正在编写一个 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>
帮助。