shell脚本如何判断非空,出现`[:缺少`]异常`

1. shell脚本if语句出现异常

shell脚本如何判断非空,出现`[:缺少`]异常`_第1张图片
一个bug.png

在shell下编写if语句时,要注意空格符号的存在

在if和[]之间以及[ ]和之中内容之间都要有空格存在
如下


正确的写法

确保空格存在之后,就不会出现问题了

2. 判断输入变量/变量

#!/bin/sh

STRING=$1
if [ -z "$STRING" ]; then 
    echo "STRING is empty" 
fi
if [ -n "$STRING" ]; then 
    echo "STRING is not empty" 
fi

也可以通过来判断:

    if [ -n "$pid" ]
    then  
        # 若不是空,则根据pid删除进程
        echo "Stoping application"
        kill -9 $pid
    else
       # 否则,则打印日志
        echo "application is not running"
    fi

3. shell脚本中if中其他变量

-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真 
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真 
-w filename 如果 filename可写,则为真 
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

示例代码:

# 若是文件存在,则直接删除对应路径下的文件,就是使用-e文件表达式
if [ -e $APPLICATION_HOME/$APP_NAME.jar ];
then
rm -rf $APPLICATION_HOME/$APP_NAME.jar;
fi

linux 下shell中if的“-e,-d,-f”是什么意思

你可能感兴趣的:(shell脚本如何判断非空,出现`[:缺少`]异常`)