2015-05-12 80 views
1

下cat命令似乎外面做工精細for循環,但是當我把它放在它裏面給出了一個語法錯誤:擊:內使用貓循環

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

有人能向我解釋,正確的方法寫這個?謝謝

+0

它給出了什麼錯誤?而且,grep可以將文件作爲參數,因此您不必捕獲文件並將其傳送給它。 –

+0

「在意外標記'cat'附近出現語法錯誤」 – Alex

回答

5

for循環應該有一個分號:

for i in 1 2 3 4 5; do 
+2

或在下一行放置'do'。 – Barmar

+0

哇哈哈,那工作。這樣一個愚蠢的錯誤...謝謝! – Alex

1

我總是喜歡把「做」中的下一行,這樣有助於我不記得使用分號:

for i in 1 2 3 4 5 
do 
    cat file_$i | grep "random text" | cut -d':' -f2 > temp_$i 
done 
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語句」,語法都按:

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

所以,要麼你把fordostatements和新線done或用分號分隔它們。