私は次のプログラムを実行しています。
min_val=1
max_val=100
int=50
if [[ "$int" =~ ^-?[0-9]+$ ]]; then
if [[ "$int" -ge "$min_val" && -le "$max_val" ]]; then
echo "$int is within $min_val to $max_val."
else
echo "$int is out of range."
fi
else
echo "int is not an integer." >&2
exit 1
fi
エラーが報告されました。
$ bash test_integer3.sh
test_integer3.sh: line 12: conditional binary operator expectedtest_integer3.sh:
line 12: syntax error near `"$max_val"'test_integer3.sh:
line 12: ` if [[ "$int" -ge "$min_val" && -le "$max_val" ]]; then'
一行一行入念に調べました。
何が問題なのでしょうか?
答え1
if [[ "$int" -ge "$min_val" && -le "$max_val" ]]; then
2つの比較で比較する必要があります$int
。
if [[ "$int" -ge "$min_val" ]] && [[ "$int" -le "$max_val" ]]; then
または、
if (( int >= min_val )) && (( int <= max_val )); then
答え2
あなたの-le
左のオペランドはありません。