我的“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没有回答正确答案。
我做错了什么?
答案 0 :(得分:1)
在单个方括号中,始终引用变量:
if [ -z "$var" ]
或者,切换到双方格:
if [[ -z $var ]]
答案 1 :(得分:0)
您应该使用[[]]
代替[
,因为它是内置的bash,表现更好。
通常read the_text
if [[ -z "$the_var" ]]; then echo "text empty"
就足够了。
我不会检查' '
字符。相反,我会检查输入的路径是否存在或使用您提供的默认值。
如果没有输入任何值,请参见Read a variable in bash with a default value如何设置变量。