2013-12-10 51 views
0

我在我的「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鍵。但是,如果我沒有回答正確的答案。

我在做什麼錯了?

回答

0

您應該使用[[]]而不是[,因爲它是內置bash的行爲更好。

通常read the_textif [[ -z "$the_var" ]]; then echo "text empty"應該就足夠了。我不會檢查' '字符。相反,我會檢查輸入的路徑是否存在或使用您提供的默認值。

請參閱Read a variable in bash with a default value瞭解如何在未輸入值的情況下設置變量。

1

在單括號,時常引用變量:

if [ -z "$var" ] 

可以切換至雙正方形:

if [[ -z $var ]] 
相關問題