Bash 从awk声明shell变量

Bash 从awk声明shell变量,bash,shell,awk,Bash,Shell,Awk,我想根据是否满足某些要求,将shell中的变量设置为true。该要求由awk确定 这就是我要做的 $ different=false $ awk 'if (certain requirements met) {'different=true'}' inputfile $ if $different; then print "Different 但是,“不同”未设置为true PS my满足的某些要求肯定是正确的 谢谢以下是您的做法 different=$(awk 'if (

我想根据是否满足某些要求,将shell中的变量设置为true。该要求由
awk
确定

这就是我要做的

$  different=false

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

$  if $different; then
     print "Different
但是,“不同”未设置为
true

PS my
满足的某些要求肯定是正确的

谢谢

以下是您的做法

different=$(awk 'if (certain requirements met) {print "true"}' infile)
这是你怎么做的

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

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

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

else打印“false”
else打印“false”
?awk无法在父shell中设置shell变量。但是,我相信awk可以为导出到子shell的变量设置值。谢谢。如何退出awk
awk
?例如,如果满足某个要求,则退出
awk
,这意味着忽略
awk
代码的其余部分。我不希望它退出shell代码。只需忽略
awk
的其余部分并继续代码的其余部分…
awk
有自己的
exit
命令,它只退出
awk
进程,而不是调用
awk
的shell。因此我只需在
awk
中编写
exit
?是的,正如我在answer.awk中所写的,awk不能在父shell中设置shell变量。但是,我相信awk可以为导出到子shell的变量设置值。谢谢。如何退出awk
awk
?例如,如果满足某个要求,则退出
awk
,这意味着忽略
awk
代码的其余部分。我不希望它退出shell代码。只需忽略
awk
的其余部分并继续代码的其余部分…
awk
有自己的
exit
命令,它只退出
awk
进程,而不是调用
awk
的shell。因此我只需在
awk
中编写
exit
?是的,正如我在回答中所写。您可以对所有测试使用
awk
,不需要额外的
if
测试。您可以对所有测试使用
awk
,不需要额外的
if
测试。