得到“预期的整数表达式”,我不明白为什么

0 bash shell-script

#!/usr/bin/bash
for (( i=0; i<=10; i++  ))
 do 
if [ "$i" -eq 3 ] || [ "$1" -eq 7 ]
 then
continue
fi
  echo "$i"
done
Run Code Online (Sandbox Code Playgroud)

运行这个时,我得到

file: line 4: [: : integer expression expected
0
file: line 4: [: : integer expression expected
1
file: line 4: [: : integer expression expected
2
file: line 4: [: : integer expression expected
4
file: line 4: [: : integer expression expected
5
file: line 4: [: : integer expression expected
6
file: line 4: [: : integer expression expected
7
file: line 4: [: : integer expression expected
8
file: line 4: [: : integer expression expected
9
file: line 4: [: : integer expression expected
10
Run Code Online (Sandbox Code Playgroud)

......我不明白为什么。

Dop*_*oti 8

如果您不带参数调用脚本,则命令:

[ "$1" -eq 7 ]
Run Code Online (Sandbox Code Playgroud)

将评估为:

[ "" -eq 7 ]
Run Code Online (Sandbox Code Playgroud)

这是一个错误,-eq数字运算符也是一个错误:它需要两个整数作为操作数;空字符串不是整数。

如果你不希望用一个参数来调用脚本,取而代之的是希望比较的价值i7,你可能想:

[ "$i" -eq 7 ]
Run Code Online (Sandbox Code Playgroud)

而不是:

[ "$1" -eq 7 ]
Run Code Online (Sandbox Code Playgroud)