1

宿題用の 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
}
4

1 に答える 1

5

このif状態は問題のようです:

if (( $act_owner == $lib ))

(())は算術演算にのみ使用され、両方の演算子が数値に変換され、 if condition とが(( 0 == 0 ))常にtrue に評価されるため、常に true に評価されます

これでもif条件:

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

true と評価され、同じ理由で日付が出力されます。

修正:その条件を次のように変更します。

if [[ $act_owner == $lib ]]
于 2013-11-11T03:19:17.753 に答える