如果我的变量在shell脚本中保存换行符,我如何比较

时间:2012-04-02 09:42:28

标签: shell scripting

我有一个脚本,其中我有一行,它确实将第三行放入我的变量中,如下所示:

variable=`sed -n '3 p' /home/nmsadm/abc.txt`

所以variable保存了这个值,它位于abc.txt的第三行。在我的情况下 将是单字行或空/空行。

如何比较shell脚本中的变量以确定它是否为空/空行? echo $variable让我感到空虚。

我需要在这里进行比较是什么 我确信这是一条空线?像这样:

if [ "$variable" = "comparison" ]; then

3 个答案:

答案 0 :(得分:6)

空或未定义:

if [ -z "${variable-}" ]

单个换行符:

if [ "${variable-}" = $'\n' ]

未定义:

if [ "${variable+defined}" != defined ]

注意,最后一个命令是而不是

相反
if [ "${variable-undefined}" = undefined ]

要了解原因,请先尝试运行variable=undefined"${variable+defined}"只有两个可能的值:空字符串或defined

答案 1 :(得分:2)

read str
if [ ${#str} -eq 0 ]       #this can been used to decide whether str is empty or not 
   then
        echo "empty"
else
    echo "not empty"
fi

答案 2 :(得分:1)

以下命令将变量的长度存储在var_length中。

var_length=$(echo ${#variable})

如果$ var_length大于或等于1,则$ variable是一个字符串