Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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脚本中的SSH搞乱了文件读取_Bash_Unix - Fatal编程技术网

Bash脚本中的SSH搞乱了文件读取

Bash脚本中的SSH搞乱了文件读取,bash,unix,Bash,Unix,我有一个脚本,可以逐行读取文件,并根据它读取的内容进行操作。它所做的一件事是通过ssh连接到远程服务器并获取一些信息。由于某些我完全无法理解的原因,这会停止读取文件中的行 脚本本质上是(为了简化问题,我删掉了很多脚本,所以如果它看起来没有什么作用,请不要担心): 此脚本最后仅在csv的第一行上运行。如果我将脚本的“ssh”部分替换为其他内容,那么它会一直运行到文件的所有行。有什么好处 ssh正在使用stdin。Pass-n如果在循环中运行从stdin读取的命令(例如ssh),则需要确保: 您的

我有一个脚本,可以逐行读取文件,并根据它读取的内容进行操作。它所做的一件事是通过ssh连接到远程服务器并获取一些信息。由于某些我完全无法理解的原因,这会停止读取文件中的行

脚本本质上是(为了简化问题,我删掉了很多脚本,所以如果它看起来没有什么作用,请不要担心):


此脚本最后仅在csv的第一行上运行。如果我将脚本的“ssh”部分替换为其他内容,那么它会一直运行到文件的所有行。有什么好处

ssh
正在使用stdin。Pass
-n
如果在循环中运行从stdin读取的命令(例如
ssh
),则需要确保:

  • 您的循环没有在stdin上迭代
  • 您的命令已重定向其stdin:
前者:

while read -u 5 -r; do
  ssh "$REPLY" ...
done 5<file
读取时-u5-r;做
ssh“$REPLY”。。。

完成5 ssh正在吃你的stdin吗(这里,你的是stdin)?尝试ssh-n,看看会发生什么……我强烈建议您在逐行读取文件时始终使用
read-r
,如果空格对您很重要,您可能需要
,而IFS=$'\n'read-r
。这样做了。谢谢如果您将来想了解更多信息,请通过运行“manssh”查找-n选项。脚本的最终工作版本与上面相同,只是ssh部分显示“ssh-nsome_server…”
while read -u 5 -r; do
  ssh "$REPLY" ...
done 5<file
while read -u "$file_fd" -r; do
  ssh "$REPLY" ...
done {file_fd}<file
while read -r; do
  ssh "$REPLY" ... </dev/null
done <file