我正在尝试在包含符号的 Linux bash 脚本中设置一个变量$
,即密码为 Gl@d1us$123,因此。我可以在前面PASS="Gl@d1us\$123"
加上,这样就可以正常工作,但是当它调用 EXPECT 脚本时,符号会导致它失败。我可以像以前一样使用 将密码直接输入 EXPECT 脚本,这样就可以正常工作,所以只是在脚本之间传递密码变量的过程让我很烦恼。 $
\
$
\
主要脚本:
echo
echo
USER=kendalla
PASS="Gl@d1us\$123"
DIR=/home/kendalla/scripts/Audit
./get_hardware.expect $HOST $USER $PASS > $DIR/$HOST
get_hardware.expect 脚本:
#!/usr/bin/expect -f
log_user 1
log_file /home/kendalla/scripts/Audit/HOST
set HOST [lrange $argv 0 0]
set USER [lrange $argv 1 1]
set PASS [lrange $argv 2 2]
spawn ssh -q -l $USER $HOST
expect "$USER@rebehc01's password:"
send "Gl@d1us\$123\r" ;#(This works)
send $PASS ;#(This doesn't work)
感谢所有帮助。
谢谢
安迪。
答案1
这就是问题:
./get_hardware.expect $HOST $USER $PASS > $DIR/$HOST .
在 shell 脚本中,您总是希望引用您的变量,除非您确切地了解何时不引用它们。
./get_hardware.expect "$HOST" "$USER" "$PASS" > "$DIR/$HOST" .