bash脚本语法错误:需要算术表达式

时间:2015-03-23 19:08:33

标签: linux bash

我正在尝试执行以下操作,编写一个包含小于或大于的脚本,但它给了我以下错误消息: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)'

2 个答案:

答案 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。你真的试图做什么?