以下是我的问题的简化版本。
if (echo "AA BB CC" | awk '{ print $1 $2 }' | grep -q "B"); then
echo $2
fi
我想在bash中提供$2
,所以我可以在脚本的其他位置使用它。
能做到吗?
更新
我意识到我已经过多地简化了这个问题。 awk表达式应该是awk '{ print $1 $2 }'
,而不仅仅是我最初发布的awk '{ print $2 }'
。
答案 0 :(得分:2)
您可以使用set
:
set -- `echo "AA BB CC" | awk '{print $2}'`
case $1 in *B*) echo $1;; esac
...或者如果您仅使用awk
来分割输出,请让set
执行该部分:
set -- `echo "AA BB CC"`
case $2 in *B*) echo $2;; esac
答案 1 :(得分:1)
记住awk的输出,测试它的正则表达式并打印出来:
output=$( echo "AA BB CC" | awk '{ print $2 }' )
if grep -q B <<< "$output" ; then echo "$output" ; fi
答案 2 :(得分:0)
您可以使用反引号运算符将stdout捕获到变量中,例如
a=`echo foo`
echo $a
对于您的示例,它将类似于:
a=`echo "AA BB CC" | awk '{ print $2 }' | grep -q "B"`
echo $a