#!/bin/sh
if [ $1+$2 -eq 1 ]
then : ;
else echo {$1..$2}
fi
大家好, 得到这个代码,它应该做:从arg1写入数字到arg2($ 1 = 3,$ 2 = 6然后输出3 4 5 6)如果args是0和1或0和1它应该什么也不做但实际上有错误和糟糕的输出:
./kek1.sh: 2: [: Illegal number: 1+2
{1..2}
谁知道什么是错的?
谢谢。
答案 0 :(得分:0)
这里有几个问题:
$(( ... ))
{...}
不支持/bin/sh
if
条件并完全避免使用else
条款。正确的解决方案是
if ! [ $(( $1 + $2 )) -eq 1 ]; then
printf "$1"
i=$1
while [ "$i" -lt "$2" ]; do
i=$((i+1))
printf " %d" "$i"
done
fi
如果可用,您可以使用seq
命令而不是while
循环:
if ! [ $(( $1 + $2 )) -eq 1 ]; then
seq "$1" "$2"
fi