检测是否在bash中设置了给定的环境变量(仅给出了环境变量名称的一部分)

时间:2014-05-22 14:14:00

标签: linux bash pattern-matching

我想在bash中执行以下操作:

if [ "${AA_BB_*}" ] ; then
    echo "I am in"
fi

和" AA__BB"只是一个模式。所以无论我设置了什么" AA_BB_1"或" AA_BB_X"在我的环境中,此脚本将打印"我在"

我怎样才能实现这一目标?非常感谢

2 个答案:

答案 0 :(得分:2)

您已关闭:${!AA_BB_*}将展开到与AA_BB_*匹配的变量名称列表。

if [ "${!AA_BB_*}" ]; then

但请注意,这将与所有 shell变量匹配,而不仅仅是那些设置了export属性的变量。如果您确实要特别针对环境变量进行检查,则必须grep env的输出:

if env | grep -q 'AA_BB_*'; then

答案 1 :(得分:0)

你可以使用env列出变量,awk只选择变量名和grep来匹配模式:

if (env | awk -F= '{print $1}' | grep -q "AA_BB_*"); then echo 'I am in' ;fi