Bash Scripting - 逐行读取变量

Luc*_*alt 3 bash scripts

我有一个单列文件,其值如下:

40 
58
76
Run Code Online (Sandbox Code Playgroud)

我想制作一个脚本来单独读取所有这些值,但我不知道通过 Bash 脚本执行此操作的方法。

我想要回声显示是这样的:

LINE 1 : value 40
LINE 2 : value 58
LINE 3 : value 76
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 9

对于这样的事情,你可以使用awk

$ awk '{print "LINE", NR, ": value", $0}' file
LINE 1 : value 40
LINE 2 : value 58
LINE 3 : value 76
Run Code Online (Sandbox Code Playgroud)

awk一次自动读取一行。NR保存行号和行$0的全部内容,因此您只需要打印它们。

但如果你真的想要 Bash,可以这样说:

line=1
while IFS= read -r value; do
  echo "LINE $line : value $value"
  (( line ++ ))
done < file
Run Code Online (Sandbox Code Playgroud)

file使用while带有< file. 每个循环,一行的值存储在变量中$value。然后,打印结果并增加变量$line以跟踪行号。

在 BashFAQ 中查看更多信息:如何逐行(和/或逐字段)读取文件(数据流、变量)?.