[[
and]]
ではなく((
andを使用する必要があり))
ます。前者はテストであり、後者は を許可する!=
が許可しない式評価-lt
です。
その上、最初のエラー メッセージが少しずれており、何も入力していない場合でも、必要以上の引数を入力したように聞こえます。のような表現がよいでしょう"Must enter exactly one argument"
。
そして、は数値であるため、この特定のケースではなく$#
、数値比較を使用することを好みます。-ne
!=
言い換えると:
#!/bin/bash
#Assign1part1
if [[ $# -ne 1 ]]; then
echo "Error: Must enter exactly one argument" >&2
exit 1
fi
if [[ $1 -lt 1 ]]; then
echo "Error: Argument must be a positive integer" >&2
exit 1
fi
seq -s, $1 -1 1
特定のテストデータでそれを実行すると、次のようになります。
pax> testprog 5
5,4,3,2,1
pax> testprog 9
9,8,7,6,5,4,3,2,1
pax> testprog
Error: Must enter exactly one argument
pax> testprog 1 2
Error: Must enter exactly one argument
pax> testprog -7
Error: Argument must be a positive integer