2016-07-24 15 views
1

私は何を私が得たことは、私はそのために、配列を使用しますが、それは動作しません。この配列の範囲を確認する方法は?

#!/bin/bash 
count=$1 
if ! ((${#count[@]} == 8 || ${#count[@]} == 9 || ${#count[@]} == 10 || ${#count[@]} == 11 || ${#count[@]} == 12 || ${#count[@]} == 13 || ${#count[@]} == 14 || ${#count[@]} == 15 || ${#count[@]} == 16));then 
echo "Error - not in range [8-16] symbols" 
else 
echo "good" 
fi 

ある 8〜16ユーザーの入力(最初の引数)の範囲があるかどうかを確認する必要があります。私は "if文"とは異なる構文を試しましたが、まだ何もありません。私の方法が馬鹿に見えるので、最初の議論の範囲を確認する他の方法はありますか?

答えて

1

${#1}を使用して、引数の長さを取得し、それが8〜16であるかどうかを整数の範囲を確認するために、あなたの場合には、bash算術比較演算子(())を使用します。

((count>=8 && count<=16)) 

だからあなた

#!/bin/bash 
count=${#1} 
if ! ((count>=8 && count<=16)); then 
    echo "Error - not in range [8-16] symbols" 
else 
    echo "good" 
fi 
+0

それは今では私に」エラーを与える – Josh

+0

など チェックAB 良い チェック 良い チェックsafsaffa 良い 私にだけ、最後の結果を与えます8-16]記号の数を入力してください – heemayl

+0

..私の編集をチェック@Josh – Josh

0

あなたはまた、入力の長さをチェックするために、正規表現を使用することができます:スクリプトは、のように書き換えることができ

0 [しない範囲内 -
if [[ $1 =~ .{8,16} ]]; then 
    echo "good" 
else 
    echo "Error - not in range [8-16] symbols" 
fi 
関連する問題