我正在为家庭作业编写一个bash脚本,需要构建一个包含一些功能的迷你库。除搜索功能外,我几乎所有功能都正常工作。第11行中的if语句始终为true。我不知道如何比较它。
$lib="library"
function search_book {
echo Enter Book Title
read title
exists=`grep "$title" $library | wc -l`
if (( $exists == 0 ))
then
echo "No Such Book in Library"
else
act_owner=`awk -F, '/'$title'/ {print $3}' $library`
echo $act_owner
if (( $act_owner == $lib ))
then
echo Book Kept In $act_owner
else
echo Book Checked Out by $act_owner
fi
fi
stop=0
while (( $stop == 0 ))
do
echo
echo "=========================="
echo "(t) Try again"
echo "(b) Back to main menu"
echo -n 'Choose Option to Continue'
read reply
case $reply in
"t") stop=1; search_book;;
"b") stop=1; main_menu;;
*) echo illegal choice, enter again:
esac
done
}
答案 0 :(得分:5)
此if
条件似乎有问题:
if (( $act_owner == $lib ))
由于((
和))
仅用于算术运算,因此它总是评估为true,因为两个运算符都转换为数字,条件变为(( 0 == 0 ))
且总是评估为真。
即便如此条件:
(( 'abc' == 0 )) && date
将评估为true并出于同样的原因打印日期。
FIX:将该条件更改为:
if [[ $act_owner == $lib ]]