我在Linux中具有以下代码:
#!/bin/sh
echo "Enter a number:"; read n;
if (($# != 0))
for ((i=1; i< $n+1; i++))
do
echo $i
done
else
for ((i=1; i<21; i++))
do
echo $i
done
fi
您可以说,我正在尝试将值从1打印到n。如果未提供用户输入,我将自动从1到20打印。运行此脚本时,它说我在意外令牌else
附近遇到语法错误。有人可以帮忙吗,我不知道我在想什么。
答案 0 :(得分:2)
您缺少then
。另外,正如其他人提到的那样,您的实现是Bashism,因此请注意第一行的更改。
#!/bin/bash
echo "Enter a number:"; read n;
if (($# != 0))
then
for ((i=1; i< $n+1; i++))
do
echo $i
done
else
for ((i=1; i<21; i++))
do
echo $i
done
fi
答案 1 :(得分:2)
实际上可与所有/bin/sh
实现一起使用的代码版本可能如下:
#!/bin/sh
echo "Enter a number:"; read n;
if [ "$#" -ne 0 ]; then
i=0; while [ "$i" -lt $(( n + 1 )) ]; do
echo "$i"
i=$((i + 1))
done
else
i=0; while [ "$i" -lt 21 ]; do
echo "$i"
i=$((i + 1))
done
fi
请注意then
结构有效所必需的if
;从if (( ... ))
到if [ ... ]
的变化;并将for ((;;;))
更改为while
循环以进行计数。
答案 2 :(得分:0)
您缺少then
:
if (($# != 0)) ; then