Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash shell命令在shell中运行,但不在脚本中运行_Bash_Shell_Ssh_Sshpass - Fatal编程技术网

Bash 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

我正在编写一个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" 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的连接可能会起到作用,我也不会感到惊讶,但如果这就是解决问题的原因,您希望直接(使用