2013-12-10 4 views
0

되지 않는 난 내 "update.sh"파일에 다음과 같은 기능을 가지고 : 나는 프롬프트 응답이 비어 있는지 물어 싶어결과가 null 또는 빈 문자열

#!/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-Key를 누를 때 야합니다. 하지만 제 대답은 정답입니다.

내가 뭘 잘못하고있어?

답변

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 ]] 
관련 문제