首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash确定变量是否为空,如果是,则退出。

bash确定变量是否为空,如果是,则退出。
EN

Stack Overflow用户
提问于 2013-11-07 22:11:52
回答 6查看 36.8K关注 0票数 31

我正在尝试执行这一点:我有一个测试文件,其中md5sum的文件位于sftp。变量应包含md5sum (字符串),如果变量为空,则表示sftp服务器上没有文件。我正在尝试这个代码,但是它不能工作。

代码语言:javascript
复制
    if [ -z $I_IDOCMD5 ] || [ -z $I_LEGALMD5 ] || [ -z $I_ZIPMD5 ]
then
        echo "ERROR: At least one file not present of checksum missing no files will be deleted" >>$IN_LOG
        ERRORS=$ERRORS+2
else
 if [[ $I_IDOCMD5 == $($DIGEST -a md5 $SAPFOLDER/inward/idoc/$I_IDOC) ]]
   then
        echo "rm IDOC/$I_IDOC" >/SAP/commands_sftp.in
   else
        echo "problem with checksum"
        ERRORS=$ERRORS+2
 fi

 if [[ $I_LEGALMD5 == $($DIGEST -a md5 $SAPFOLDER/inward/legal/$I_LEGAL) ]]
   then
        echo "rm LEGAL/$I_LEGAL" >>/SAP/commands_sftp.in
   else
        echo "problem with checksum"
        ERRORS=$ERRORS+2
 fi

 if [[ $I_ZIPMD5 == $($DIGEST -a md5 $SAPFOLDER/inward/zip/$I_ZIP) ]]
   then
        echo "rm ZIP/$I_ZIP" >>/SAP/commands_sftp.in
   else
        echo "problem with checksum"
        ERRORS=$ERRORS+2
fi
EN

回答 6

Stack Overflow用户

发布于 2015-03-28 01:04:02

我更喜欢这样的答案:

代码语言:javascript
复制
[[ -z "$1" ]] && { echo "Parameter 1 is empty" ; exit 1; }

注意,不要忘记在每条指令之后将;放入{}

票数 46
EN

Stack Overflow用户

发布于 2013-11-07 22:16:40

检查变量是否为空的一种方法是:

代码语言:javascript
复制
if [ "$var" = "" ]; then
    # $var is empty
fi

另一个更短的选择是这样的:

代码语言:javascript
复制
[ "$var" ] || # var is empty
票数 25
EN

Stack Overflow用户

发布于 2017-07-14 20:19:48

在bash中,您可以使用set -u,这会导致bash在参数扩展失败时退出。

来自bash man (关于set内置的部分):

-u

在进行参数扩展时,将未设置的变量和特殊参数@和*以外的参数视为错误。如果试图在未设置的变量或参数上展开,shell将打印一条错误消息,如果不是交互式的,则以非零状态退出。

有关更多信息,我推荐这篇文章:http://redsymbol.net/articles/unofficial-bash-strict-mode/

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19838064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档