在第一个例子中,一切运行正常。
#!/bin/bash
echo 'Enter file name:'
read file
while read line;do
echo $line
done < $file
但事实并非如此:
#!/bin/bash
echo 'Enter file name:'
read file
while read line;
do
echo $line
done
< $file
为什么?
答案1
< $file
是有效的简单命令。它将输入重定向到$file
并且不执行任何操作。
shell 脚本中的换行符被解释为命令的结束(您可以想象那里有一个分号)。有一些例外(例如,您可以在 a 后面放置换行符|
,它将被忽略)。基本上,如果有换行符并且命令可以在那里结束,它将被解释为命令的结束。