我收到错误说
"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
答案 0 :(得分:1)
在您的脚本中,i
和j
都被初始化为1,这意味着您的整个循环回显1 * 1 = 1,200次。此外,第一次if语句测试j
时未定义$j
,因此您收到错误消息"line 6: [: : integer expression expected"
。
打印200个方程式的一种方法,包括i
和j
的组合,其中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
这样,i
和j
都会在执行任何语句之前进行初始化,并且您可以在循环内设置最大和最小限制。