更改脚本中的行时输出的行为会有所不同

更改脚本中的行时输出的行为会有所不同

在第一个例子中,一切运行正常。

#!/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 后面放置换行符|,它将被忽略)。基本上,如果有换行符并且命令可以在那里结束,它将被解释为命令的结束。

相关内容