我正在尝试执行以下操作,编写一个包含小于或大于的脚本,但它给了我以下错误消息:syntax error: arithmetic expression required
请告知以下代码示例:
x=1
for ($x -lt 21) -- I tried the following expressions: ($x <21), ("$x"<21), ("$x" -lt 21)
do
if ($x!=7 or $x!=15);
then
echo $x
fi
x++
done
我收到错误消息:
./test1.sh: line 2: syntax error near unexpected token `-lt'
./test1.sh: line 2: ` for ($x -lt 21)'
答案 0 :(得分:2)
在bash中:
#!/bin/bash
declare -i x=1
while [ $x -lt 21 ]; do
[ $x -ne 7 -a $x -ne 15 ] && printf "%s\n" $x
((x++))
done
<强>输出强>
$ bash thescript.sh
1
2
3
4
5
6
8
9
10
11
12
13
14
16
17
18
19
20
答案 1 :(得分:1)
这不是你表达条件的方式。 man test
了解详情。
你可能想要更像这样的东西:
#!/bin/bash
x=1
while [ $x -lt 21 ]; do
if [ $x -ne 7 ] || [ $x -ne 15 ]; then
echo $x
fi
# don't forget to set x to something else, or the loop will never finish.
done
我使用while
代替for
,因为.. for
会逐步执行一组值,而while
会检查测试结果。
请注意,此STILL不正确,因为您的“或”条件是......不稳定的。无论$x
是什么,条件都会评估为真,因为在所有情况下变量都是“非7”或“不是15”。
但这很可能是XY Problem。你真的试图做什么?