$COUNTER
ここに私のコードがあります。何度も比較したいです。
if [ "$COUNTER" = "5" ]; then
大丈夫ですが、やりたいです。動的5,10,15,20
こんな時
答え1
さまざまなコメントの結論は、元の質問に対する最も簡単な答えは次のとおりです。
if ! (( $COUNTER % 5 )) ; then
答え2
モジュロ算術演算子を使用してこれを実行できます。
#!/bin/sh
counter="$1"
remainder=$(( counter % 5 ))
echo "Counter is $counter"
if [ "$remainder" -eq 0 ]; then
echo 'its a multiple of 5'
else
echo 'its not a multiple of 5'
fi
使用中:
$ ./modulo.sh 10
Counter is 10
its a multiple of 5
$ ./modulo.sh 12
Counter is 12
its not a multiple of 5
$ ./modulo.sh 300
Counter is 300
its a multiple of 5
私もあなたが探しているループを書いています。その後、1から600までのすべての数字を繰り返し、5の倍数であることを確認します。
ループドア
#!/bin/sh
i=1
while [ "$i" -le 600 ]; do
remainder=$(( i % 5 ))
[ "$remainder" -eq 0 ] && echo "$i is a multiple of 5"
i=$(( i + 1 ))
done
出力(行です)
$ ./loop.sh
5 is a multiple of 5
10 is a multiple of 5
15 is a multiple of 5
20 is a multiple of 5
25 is a multiple of 5
30 is a multiple of 5
...
555 is a multiple of 5
560 is a multiple of 5
565 is a multiple of 5
570 is a multiple of 5
575 is a multiple of 5
580 is a multiple of 5
585 is a multiple of 5
590 is a multiple of 5
595 is a multiple of 5
600 is a multiple of 5
答え3
質問に答える正確に現在作成されているようにタイトル(修正済み)を無視します。
変数の整数を他の整数値と比較します。ここで他の値はあらかじめ決められています(質問で「動的」が実際に何を意味するのかは不明です)。
case "$value" in
5|10|15|200|400|600)
echo 'The value is one of those numbers' ;;
*)
echo 'The value is not one of those numbers'
esac
もちろん、これはループでも実行できます。
for i in 5 10 15 200 400 600; do
if [ "$value" -eq "$i" ]; then
echo 'The value is one of those numbers'
break
fi
done
ただし、これによりイベントの処理がより困難で$value
困難になります。いいえ一種のフラグを使用せずに、指定された数字内で検索します。
found=0
for i in 5 10 15 200 400 600; do
if [ "$value" -eq "$i" ]; then
echo 'The value is one of those numbers'
found=1
break
fi
done
if [ "$found" -eq 0 ]; then
echo 'The value is not one of those numbers'
fi
またはクリーナー、
found=0
for i in 5 10 15 200 400 600; do
if [ "$value" -eq "$i" ]; then
found=1
break
fi
done
if [ "$found" -eq 1 ]; then
echo 'The value is one of those numbers'
else
echo 'The value is not one of those numbers'
fi
私は自分でcase ... esac
実装します。