以下cat命令似乎在循环外工作正常,但是当我将其放在其中时会产生语法错误:
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扩展。{1..5}
for i in {1..5}; do
##
done
我总是更喜欢在下一行中放" do",这种方式可以帮助我不记得使用semicolons:
for i in 1 2 3 4 5
do
cat file_$i | grep "random text" | cut -d':' -f2 > temp_$i
done
在bash中,'line的结尾'被隐式视为命令/语句的结尾 。
示例:
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
但是,当您要在同一行上添加两个语句/命令时,您需要通过Semi-Colon(;)明确。
将它们分开。示例:
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 variable in (value-set)
do
----statements----
done
因此,要么将for
,do
,statements
和done
放在新行中,要么通过半颜色将它们分开。