Bash脚本错误,预期整数表达式

时间:2016-02-18 23:28:45

标签: linux bash conditional

我收到错误说

"line 6: [: : integer expression expected"

我无法弄清楚如何解决它。我正在尝试编写一个脚本来打印200个方程式,方程式应为“i * j = k”,其中i是1到10之间的整数,j是1到20之间,k是i的乘积和j。

#!/bin/bash

for i in {1..200..1}
do

    if [ "$i" -gt 0 ]  && [ "$i" -lt 11 ] && [ "$j" -gt 0 ] && [ "$j" -lt 21 ]
        then 
        i = 1
        j = 1
        k = $(($i * $j))
           echo $i * $j = $k
           ((i++))
           ((j++))
    fi
done

1 个答案:

答案 0 :(得分:1)

在您的脚本中,ij都被初始化为1,这意味着您的整个循环回显1 * 1 = 1,200次。此外,第一次if语句测试j时未定义$j,因此您收到错误消息"line 6: [: : integer expression expected"

打印200个方程式的一种方法,包括ij的组合,其中i是1到10之间的整数,j介于1到20之间,如下:

#!/bin/bash

for (( i = 1; i <= 10; i++ )); do
    for (( j = 1; j <= 20; j++ )); do
        k=$(( i * j ))      # Note no space before/after equal sign
        echo "$i * $j = $k" # Note the quotation mark
    done
done

或者你可以用不同的格式做同样的事情:

#!/bin/bash

for i in {1..10}; do
    for j in {1..20}; do
        k=$(( i * j ))
        echo "$i * $j = $k"
    done
done

这样,ij都会在执行任何语句之前进行初始化,并且您可以在循环内设置最大和最小限制。