2015-02-24 154 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曾在它的空间,它会扩展到多个单词。)