Bash If/Elif结构有什么问题吗?

Bash If/Elif结构有什么问题吗?,bash,shell,if-statement,Bash,Shell,If Statement,如果[-100-ge$a&&$a-ge 100]|[100-ge$b&&$b-ge 100]],则设置两个整数-100 问题是您正在查找的数字必须小于当前范围,且大于当前范围。那是不会发生的。您应该将条件更改为或 if[-100-ge$a | |$a-ge 100]| |[-100-ge$b | |$b-ge 100]] 这里是工作脚本: #/bin/bash a=$1 b=2美元 如果[-100-ge$a | |$a-ge 100]]| |[-100-ge$b | |$b-ge 100]]

如果[-100-ge$a&&$a-ge 100]|[100-ge$b&&$b-ge 100]],则设置两个整数-100

问题是您正在查找的数字必须小于当前范围,且大于当前范围。那是不会发生的。您应该将条件更改为

if[-100-ge$a | |$a-ge 100]| |[-100-ge$b | |$b-ge 100]]
这里是工作脚本:

#/bin/bash
a=$1
b=2美元
如果[-100-ge$a | |$a-ge 100]]| |[-100-ge$b | |$b-ge 100]]
然后
回声“a或b超出范围”
elif[$((a%b))=0]]
然后
echo$((a+b))$((a-b))$((a*b))$((a/b))
其他的
echo$((a+b))$((a-b))$((a*b))'#
fi

用shellcheck.netSo检查一下,实际上你想要一个介于-100和100之间的值,对吗?我想你的意思是“或”你说的“和”&。
#!/bin/bash
a=$1
b=$2
if [[ -100 -ge $a && $a -ge 100 ]] || [[ -100 -ge $b && $b -ge 100 ]]
then
    echo 'a or b out of range'
elif [[ $((a % b)) = 0 ]]
then
    echo $((a + b)) $((a - b)) $((a * b)) $((a / b))
else
    echo $((a + b)) $((a - b)) $((a * b)) '#'
fi