鉴于以下程序读取用户输入两次
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
HOWEVER
当我输入foo
后跟时,我希望控制台输出
123
相反,我得到了
有人可以向我解释,虽然第二个输入是
答案 0 :(得分:1)
在两种情况下,以下情况:
search_grep $book_title $author
扩展为使用单个参数的调用。因此,“then”子句被激活。原因是由空格组成的不带引号的参数扩展为空,并消失。这就是bash的方式。
如果你想传递search_grep两个参数,那么你需要引用变量:
search_grep "$book_title" "$author"
答案 1 :(得分:0)
如图here所示,您可以尝试使用=而不是==
或者对于空字符串比较,请尝试-z