Bash: 在 for 循环中使用 cat

Bash: using cat within for loop

下面的 cat 命令似乎在 for 循环之外工作正常,但是当我将它放在 for 循环中时会出现语法错误:

for i in 1 2 3 4 5 do
  cat file_$i | grep "random text" | cut -d':' -f2 > temp_$i
done

谁能告诉我正确的写法?谢谢

你的 for 循环应该有一个分号:

for i in 1 2 3 4 5; do

你不需要把1 2 3 4 5循环。

您可以使用 bash brace expansion{1..5}

for i in {1..5}; do 
##
done

我总是喜欢把 "do" 放在下一行,这样可以帮助我不记得使用分号:

for i in 1 2 3 4 5
do
  cat file_$i | grep "random text" | cut -d':' -f2 > temp_$i
done

在 bash 中,'end of the line' 被 bash 编译器隐式视为 commands/statements 的结尾。

示例:

echo "Hello"
exit
#No need of semi-colons here as it is implicit that the end of the line is the completion of the statement 

但是当你想在同一行添加两个statements/commands时,你需要显式地用分号(;)分隔.

示例:

   echo "hello"; exit
#here semi-colon implies that the echo statement ends at the semi-colon and from there on to the end of the line is a new statement.

关于"for statement",语法如下:

for variable in (value-set)
do
 ----statements----
done

所以,要么将 fordostatementsdone 换行,要么用分号分隔它们。