【问题标题】:Result of prompt answer are not null or being a empty string提示答案的结果不为空或为空字符串
【发布时间】:2013-12-10 09:07:13
【问题描述】:

我的“update.sh”文件中有以下功能:

#!/bin/bash
updateSymfony()
{
    path=/var/www/symfony

    echo "Falls der Symfony-Pfad abweichend von /var/www/symfony ist, geben Sie in bitte hier an, ansonsten nur Enter drücken"
    echo " "
    read pathanswer
    echo $path
    echo $pathanswer
    if [ -n $pathanswer ]
       then
            if [ $pathanswer!="" ]
                then
                    if [ $pathanswer!=" " ]
                        then
                            if [ -d "$pathanswer" ]
                                then
                                    $path=$pathanswer
                                else
                                    echo "Leider existiert der Pfad $pathanswer nicht"
                                    return
                            fi
                    fi
            fi
    fi

    if [ -d "$path" ]; then

            cp $path $path-backup -R
            cd $path

            php composer.phar selfupdate

            php composer.phar update

            clearCache

            clearCacheProd

            setOwner
    else
            echo "Es wurde kein Symfony gefunden"
    fi

}

我想问一下提示答案是否为空。这应该是我按下 Enter 键的时候。但是我的 if 没有响应正确的答案。

我做错了什么?

【问题讨论】:

    标签: bash


    【解决方案1】:

    在单方括号中,始终引用变量:

    if [ -z "$var" ]
    

    或者,切换到双正方形:

    if [[ -z $var ]]
    

    【讨论】:

      【解决方案2】:

      您应该使用[[]] 而不是[,因为它是一个表现更好的内置bash。

      通常read the_textif [[ -z "$the_var" ]]; then echo "text empty" 就足够了。

      我不会检查 ' ' 字符。相反,我会检查输入的路径是否存在或使用您提供的默认路径。

      如果没有输入值,请参阅Read a variable in bash with a default value,了解如何设置变量。

      【讨论】:

        猜你喜欢
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 2021-07-06
        • 2011-03-18
        • 2014-12-18
        • 2013-03-26
        • 2015-06-05
        • 2021-09-22
        相关资源
        最近更新 更多