Bash比较字符串不起作用

时间:2013-11-11 03:10:57

标签: bash

我正在为家庭作业编写一个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
}

1 个答案:

答案 0 :(得分:5)

if条件似乎有问题:

if (( $act_owner == $lib ))

由于(())仅用于算术运算,因此它总是评估为true,因为两个运算符都转换为数字,条件变为(( 0 == 0 ))总是评估为真

即便如此条件:

(( 'abc' == 0 )) && date

将评估为true并出于同样的原因打印日期。

FIX:将该条件更改为:

if [[ $act_owner == $lib ]]