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
所以,要么将 for
、do
、statements
和 done
换行,要么用分号分隔它们。
下面的 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
所以,要么将 for
、do
、statements
和 done
换行,要么用分号分隔它们。