2015-02-24 205 views
0

我實際上想要將FS初始化爲「=」並將第二個字段存儲在某個文本文件中。我爲它編寫了一個shell腳本。這裏BASH正在考慮$ 2是指第二個字段輸入文本文件和$ 1表示輸入文本文件的名稱。bash如何區分AWk參數和shell參數?shell腳本中的參數

THIs是shellcript,它的工作原理!

awk 'BEGIN{FS="=";}{print $2 >> "a.txt"}' $1 
exit 
+2

事實並非如此。單引號使shell忽略內容。它根本找不到變量。這就是單引號的作用。 – 2015-02-24 18:39:37

+0

'$ 1'是一個shell變量,第一個位置參數。 '$ 2'是一個awk結構,引用當前記錄中第二個字段(2)的值($)。 – 2015-02-24 18:44:45

+0

沒有awk,同樣的結果是可能的:'cut -d = -f2 $ 1'。當你想要等號後的所有內容時,即使是可能的第二個,使用'-f2-'。 – 2015-02-24 21:44:33

回答

0

單引號之間的整個字符串被逐字傳遞給awk。由於$1不在單引號之間,因此bash將解釋它並替換第一個參數的值。

(順便說一下,這是一個很好的做法,始終使用變量雙引號,如"$1"。否則,如果$1曾在它的空間,它會擴展到多個單詞。)