bash while循环未终止

bash while循环未终止,bash,Bash,我在bash中写了一行: while read line; printf $line' '; do : ; done < someFile 它似乎很好地遍历了文件的行,但随后它进入了一个无限循环。我意识到我的错误是把printf放在do之前而不是之后,但我仍然不明白这里发生了什么。为什么我会得到一个无限循环?你把它放错地方了。你想要: while read line; do printf "%s" "$line "; done < someF

我在bash中写了一行:

while read line; printf $line' '; do : ; done < someFile
它似乎很好地遍历了文件的行,但随后它进入了一个无限循环。我意识到我的错误是把printf放在do之前而不是之后,但我仍然不明白这里发生了什么。为什么我会得到一个无限循环?

你把它放错地方了。你想要:

while read line; do printf "%s" "$line "; done < someFile
你放错地方了。你想要:

while read line; do printf "%s" "$line "; done < someFile
正确的语法是

while read line; do printf $line' '; done  < someFile
试试看

如果使用多行脚本编写,则更好地理解

#!/bin/bash   
while read line
do
  printf $line' '
done < SomeFile
正确的语法是

while read line; do printf $line' '; done  < someFile
试试看

如果使用多行脚本编写,则更好地理解

#!/bin/bash   
while read line
do
  printf $line' '
done < SomeFile

似乎您没有阅读问题您是对的,我看到了do错误,而且我没有在Usali之后阅读,我在read命令之前添加了IFS=选项,以防止前导/尾随空格被修剪,而IFS=读取-r行;在$line上执行命令_;done code似乎您没有阅读问题您是对的,我看到了do错误,而且我没有在Usali之后阅读,我在读取命令之前添加了IFS=选项,以防止前导/尾随空格被修剪-当IFS=读取-r行时编码;在$line上执行命令_;完成代码我知道我错放了do,它写在问题中,但解释很有帮助。还有:在这里只是一个占位符,我做了其他的事情,其中有一行我知道我错放了do,它写在问题中,但解释是有用的。另外:在这里只是一个占位符,我在那里做了其他的事情,不打印$line'',如果line的值以破折号开始,它很可能会失败。顺便说一句,这是一种无意中打破无限循环的方法。请改为printf“%s”$line。不要printf$line“”,如果line的值以破折号开头,则很可能会失败。顺便说一句,这是一种无意中断无限循环的方法。改为打印“%s”$行。