我正在尝试将下面的输出插入变量null
中。输出是一个字符串。我以前做过。
x
当我这样做时,它可以正常工作,并且在执行echo $ x时可以获得预期的输出
k="psz"
但是当我尝试在下面使用此功能时,它不起作用
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 )
给了我空白行。
答案 0 :(得分:3)
您要使用字符串a
而不是变量k
的值来设置$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]
将被设置为{{ 1}}的值,在该示例中为$k
。
Ed Morton的编辑(请参见下面的评论):
accdias