如何检查变量(通常是文本)是否未定义或为空,如果变量为空则使用其他变量

时间:2014-03-13 01:41:53

标签: bash

脚本A从B脚本导入所有变量;问题是脚本B,我不知道是否存在或者是我需要的变量是空的。案例不存在B中的变量,那么我在脚本A中使用我的变量。它存在于A中使用我的变量B;或者它存在于A和B中,然后用于B中的默认变量。

示例: 在这种情况下,我的脚本中的变量Comment3" B"是空的......

脚本B.sh

#!/bin/sh
Name='<b>Variety</b>'
Comment='<span size="xx-large">Variety changes the wallpaper on a regular interval</span>'
Comment3=''
License='GPLv3'
Screenshot='http://peterlevi.com/variety/wp-content/uploads/2012/10/01-all-1024x576.jpg'
Url='http://peterlevi.com/variety/'
export Comment
export Name
export Comment3
export License
export Screenshot
export Url

脚本A.sh

#!/bin/sh
. $HOME/B.sh
Comment2='Variety changes the desktop wallpaper on a regular basis, using user-specified or automatically downloaded images.'

echo $display_variable_comment3_or_comment2 (depending the case)
抱歉,我的英语不好:/

2 个答案:

答案 0 :(得分:4)

在BASH中你可以这样做:

pvar="${s:-defaultVal}"

如果pvar存在,$s将设置为defaultVal,否则会设置为{{1}}

答案 1 :(得分:1)

这取决于您是否需要检查变量是否存在或者它的值是否为空。如果你只需要测试它是否为空,你可以使用它:

if [ -z "$COMMENT3" ] ; then
    COMMENT3="some comment"
fi

...否则请使用@ anubhava的答案。