Bash shell脚本如果else循环不工作
给定以下程序,该程序读取用户输入两次Bash shell脚本如果else循环不工作,bash,shell,debugging,command-line,Bash,Shell,Debugging,Command Line,给定以下程序,该程序读取用户输入两次 function search_grep { if [ "$2" == "" ];then for x in "${title[@]}" do value=$(echo $x | grep "$1") if [ "$value" != "" ];then echo "$value" fi done elif [ "$1" == "" ];then
function search_grep
{
if [ "$2" == "" ];then
for x in "${title[@]}"
do
value=$(echo $x | grep "$1")
if [ "$value" != "" ];then
echo "$value"
fi
done
elif [ "$1" == "" ];then
hello="123"
echo "$hello"
fi
}
echo -n "Enter title : "
read book_title
echo -n "Enter author : "
read author
title=(CatchMe HappyDay)
search_grep $book_title $author
当我输入
后接HappyDay
时,它会按预期工作
当我输入foo
后跟
时,我希望控制台输出为
123
相反,我得到了
有人可以向我解释一下,程序没有执行第二个elif循环,尽管第二个输入是
,如图所示,您可以尝试使用=而不是==
或者,对于空字符串比较,请在两种情况下都尝试-z,如下所示:
search_grep $book_title $author
扩展为具有单个参数的调用。因此,“then”子句被激活。原因是由空格组成的无引号参数扩展为零并消失。这就是bash的方式
如果要传递两个search_grep参数,则需要引用以下变量:
search_grep "$book_title" "$author"
它适用于第一种情况,为什么不适用于第二种情况??