2016-07-13 8 views
-1

エラー行8:[:N:整数式が予想されるが表示されます。私は$ userManuf「」を削除し、=に==を変更しようとしていると私はまだエラーが発生します。私は何をすべきか?おかげ行8:[:N:整数式が期待される

function manuf { 
echo -n "Manufacturer: " ; read userManuf 
varManuf=$(mysql -D snipeit -e "SELECT count(id) FROM manufacturers;") 
countManuf=$(echo $varManuf | awk '{print $2}') 

if [ $userManuf -ne 0 ] && [ $userManuf -le $countManuf ]; then 
    assetModelManuf=$userManuf 
elif [ "$userManuf" = "n" ] || [ "$userManuf" = "N" ]; then 
    echo -n "Type new manufacturer name: " ; read userNewManuf 
    assetModelManuf=$userNewManuf 
else echo "Try again!" && manuf 
fi 
} 
+0

これはどの言語を指定する必要があります。タグを使用する。 – Laurel

+0

思い出してくれてありがとう、そのbashスクリプトと私はこれに新しいです。はい、私は条件式と比較を書くことについて読む –

答えて

2

$userManufNに展開するときにエラーが発生しているが、あなたは整数オペレータ-neとオペランドとしてそれを使用してみてください。最も簡単な修正は、それが(そして、比較を簡単にするために算術文を使用して)最初の数値を持っていることを確認するために、次のようになります。

if [[ $userManuf =~ [0-9]+ ]] && ((0 < userManuf && userManuf <= countManuf)); then 
    assetModelManuf=$userManuf 
elif [[ $userManuf = [nN] ]]; then 
    read -p "Type new manufacturer name: " assetModelManuf 
else 
    echo "Try again!" && manuf 
fi 

あなたはおそらくも再帰的にmanufを呼び出すのではなく、whileループを使用します。私はそれを練習問題(または必要に応じて将来の質問)として残します。

+0

ありがとうございました@chepner、私は勉強しようとします**しばらくの間**ループ。 ** [**/**(**と** [** **/**(**リンクサイトですか?ありがとう! –

+0

@PauloBernardo BashFAQ [テストコマンド([]]や[[]] ')(http://mywiki.wooledge.org/BashFAQ/031)、[シェル演算('(()) 'を含む)]] http://mywiki.wooledge.org/ArithmeticExpression)。 –

関連する問題