0

我在shell脚本(BASH)中使用“while”循环来读取文件的行(一个接一个) - “幸运的是”,它不工作文件中有行的次数。

这是摘要: $ cat inputfile.txt

1
2
3
4
5

现在,shell 脚本内容非常简单,如下所示:

#!/bin/bash

while read line 
do
 echo $line ----------; 
done < inputfile.txt;

上面的脚本代码工作得很好..... :)。它显示了 inputfile.txt 中的所有 5 行。



现在,我有另一个脚本,其代码如下:

#!/bin/bash

while read line 
do
 echo $line ----------;

 somevariable="$(ssh sshuser@sshserver "hostname")";
 echo $somevariable;
 
done < inputfile.txt;

现在,在这个脚本中,while 循环只显示“1 ---------”行,并在显示“$somevariable”的有效值后退出循环

任何想法,我在这里缺少什么。我没有尝试使用一些数字 N < inputfile.txt 并使用 done <&N 方式(即通过使用 N 描述符指向的文件来更改输入重定向器)....但我很好奇为什么这个简单的脚本不是为 N 号工作。有时,当我刚刚添加一个简单的变量声明时,它在子 shell 中执行“ssh”操作。

谢谢。

4

1 回答 1

4

您可能希望将-n选项添加到 ssh 命令。这将阻止它“吞下”您的 inputfile.txt 作为其标准输入。

或者,您可能只是从 /dev/null 重定向 ssh 标准输入,例如:

somevariable="$(ssh sshuser@sshserver "hostname" </dev/null)";
于 2013-05-01T23:42:45.523 回答