我试图将下面的输出插入变量中x
。输出是一个字符串。我以前做过。
k="psz"
当我这样做时,它可以正常工作,并且在执行echo $ x时可以获得预期的输出
x=$( awk -v a="k" -F '[:,]' '{ if($1 == "psz") print $5 }' /etc/passwd )
但是当我尝试在下面使用它时,它不起作用
x=$( awk -v a="k" -F '[:,]' '{ if($1 == a) print $5 }' /etc/passwd )
它不起作用,echo$x
给了我一个空白行。
您a
使用字符串k
而不是variable的值进行设置$k
。如果设置正确,代码将正常工作。看:
k='accdias'
x=$(awk -va=$k 'BEGIN{FS=":"} $1==a {print $5}' /etc/passwd)
echo $x
Antonio Dias
我正在对此进行编辑,以显示awk
不使用变量将变量值传递给程序的另一种方法-v
:
k='accdias'
x=$(awk 'BEGIN{FS=":"} $1==ARGV[2] {print $5}' /etc/passwd $k)
echo $x
Antonio Dias
在上述示例中,上面的代码ARGV[0]
将设置为awk
,ARGV[1]
将设置为/etc/passwd
,最后ARGV[2]
将设置为$k
value accdias
。
Ed Morton的编辑(请参见下面的评论):
k='accdias'
x=$(awk -v a="$k" 'BEGIN{FS=":"} $1==a {print $5}' /etc/passwd)
echo "$x"
Antonio Dias
k='accdias'
x=$(awk 'BEGIN{FS=":"; a=ARGV[2]; ARGV[2]=""; ARGC--} $1==a {print $5}' /etc/passwd "$k")
echo "$x"
Antonio Dias
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句