从awk声明shell变量

时间:2013-11-05 20:37:17

标签: bash shell awk

我想将shell中的变量设置为true,具体取决于是否满足某些要求。该要求由awk确定。

所以这就是我做的事情

$  different=false

$  awk 'if (certain requirements met) {'different=true'}' inputfile

$  if $different; then
     print "Different

但是,不同的设置不是true

PS我的certain requirements met绝对是真的。

谢谢

2 个答案:

答案 0 :(得分:4)

awk无法在调用它的shell中设置变量。您可以使用exit设置awk的退出状态:

$ if awk 'if (certain requirements met) {exit 0} else { exit 1 }' inputfile; then
>  printf "different\n"
> fi

或者在变量中捕获awk的输出:

$ different=$( awk 'if (certain requirements met) { print "true" } else { print "false" }' inputfile )
$ if [[ $different = true ]]; then
>  printf "different\n"
> else
>  printf "Not different"
> fi

答案 1 :(得分:2)

这是你如何做到的。

different=$(awk 'if (certain requirements met) {print "true"}' infile)