我正在运行这样一个程序:
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
您必须$int
在两个比较中进行比较:
if [[ "$int" -ge "$min_val" ]] && [[ "$int" -le "$max_val" ]]; then
或者,
if (( int >= min_val )) && (( int <= max_val )); then
答案2
你的-le
没有左操作数。