Bash:在for循环中使用cat

时间:2015-05-12 02:24:57

标签: bash cat

以下cat命令似乎在for循环之外正常工作,但当我将其置于其中时会出现语法错误:

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

有人可以向我解释写这个的正确方法吗?谢谢

4 个答案:

答案 0 :(得分:5)

您的nil循环应该有分号:

initWithCoder:

答案 1 :(得分:2)

您无需将1 2 3 4 5置于循环中。

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

在bash中,bash编译器将'行的末尾'隐含地视为命令/语句的结尾

示例:

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 

但是当你想在同一行上添加两个语句/命令时,你需要用分号(;)明确地分隔它们。

示例:

   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放在新行中,也可以用分号分隔。