Bash shell命令在shell中运行,但不在脚本中运行
我正在编写一个shell脚本,其中包含以下行-Bash shell命令在shell中运行,但不在脚本中运行,bash,shell,ssh,sshpass,Bash,Shell,Ssh,Sshpass,我正在编写一个shell脚本,其中包含以下行- sshpass -p "pwd" ssh -t hostname@$ip1 ' cd /path/to/home/oflops/cbench; ./cbench -c $ip2 -p 6633 -m 1000 -l 10 -M 1000 -s 1 -t; ' >> file 上面这行代码在shell中运行良好,但在脚本中不起作用。请帮助,我刚刚开始编写脚本,无法找出我的错误。像这样运行您的命令: sshpass -p "pwd" ss
sshpass -p "pwd" ssh -t hostname@$ip1 ' cd /path/to/home/oflops/cbench; ./cbench -c $ip2 -p 6633 -m 1000 -l 10 -M 1000 -s 1 -t; ' >> file
上面这行代码在shell中运行良好,但在脚本中不起作用。请帮助,我刚刚开始编写脚本,无法找出我的错误。像这样运行您的命令:
sshpass -p "pwd" ssh -t hostname@$ip1 "cd /path/to/home/oflops/cbench; ./cbench -c $ip2 -p 6633 -m 1000 -l 10 -M 1000 -s 1 -t;" >> file
i、 e.在命令中使用双引号而不是单引号来扩展变量,如$ip2
“sshpass”命令未在bash脚本中运行。我对上面的脚本进行了如下更改,以使其运行-
`sshpass -p "pwd" ssh -o StrictHostKeyChecking=no hostname@$ip1 "cd /path/to/home/oflops/cbench; ./cbench -c $ip2 -p 6633 -m 1000 -l 10 -M 1000 -s 1 -t;" >> file`
我没有得到任何错误。问题是ssh后必须在shell中运行的命令不起作用。您如何知道它不起作用?这些命令“cd/path/to/home/oflops/cbench;/cbench-c$ip2-p6633-m1000-l10-m1000-s1-t;”未运行。这些命令未运行,因为我无法在输出文件中看到命令生成的输出。“命令未运行”并不总是等同于“无法看到输出”。。。。就这么说吧。但更重要的是,
$ip2
位于单引号内,因此不会展开。在命令周围添加反勾号不会以其他方式“使其运行”。相反,它所做的是获取命令的输出,stringsplit和glob扩展该输出,并将结果作为第二个命令本身运行。另外,由于您将输出重定向到一个文件,因此可以保证没有可解释的反勾号输出,这意味着它们不会产生任何可能的影响……也就是说,如果抑制与stdin的连接可能会起到作用,我也不会感到惊讶,但如果这就是解决问题的原因,您希望直接(使用