1
我的目标是让程序循环两个文件,并使用来自file1和file2的所有行的组合来评估单独的shell脚本。我通过将它移出while循环来验证我的eval线的工作原理。Bash:我无法在double while循环中运行eval命令
#!/bin/bash
while read line1
do
while read line2
do
eval "ssh_connect $line1 $line2"
done < $FILE2
done < $FILE1
ssh_connect根据命令行参数中提供的用户名和密码创建一个新的ssh连接。
set username [lindex $argv 0];
set password [lindex $argv 1];
puts "$password"
puts "$username"
spawn ssh [email protected]<location>.com
expect "assword:"
send "$password\r"
interact
我已验证上述脚本正常工作。但是,当我从while循环的子shell中调用它时,它会提示输入密码,并且不会按预期方式进行设置。
如何修改我的第一个shell脚本,以便它评估第二个正确
您确定需要使用'eval'吗?这只在文件包含需要解释的shell语法时才需要。如果文件只包含用户名和密码,你应该可以执行'ssh_connect“$ line1”“$ line2”' – Barmar
使用公钥认证,而不是像这样写定制包装来提供密码。 – chepner