我正在尝试嵌套几个if / else语句。也许我犯了一个非常愚蠢的错误,但我无法使其正常工作。顺序有3个变量,其中一个随机为“ -1”。
如果其中之一为“ -1”,则随后的所有值也均为“ -1”,因此,如果FOO2为“ -1”,则FOO3也为。
每当变量为“ -1”时,我都需要打印到控制台,优先处理第一个变量,因此最后一个示例应仅打印“ FOO2 is -1”,而没有其他内容。
这应该显示“ FOO3是-1”,但不会。
FOO1="2"
FOO2="2"
FOO3="-1"
if [ ${FOO1} -eq "-1" ]
then
if [ ${FOO2} -eq "-1" ]
then
if [ ${FOO3} -eq "-1" ]
then
echo "FOO3 is -1"
else
echo "FOO2 is -1"
fi
else
echo "FOO1 is -1"
fi
fi
答案 0 :(得分:2)
您的第一个测试是错误的,并且没有{Interval(0.0, 0.1, closed='right'): 0.044511160008147525, Interval(0.1, 0.2, closed='right'): 0.15604870269444393, Interval(0.2, 0.3, closed='right'): 0.2622453825250092, Interval(0.3, 0.4, closed='right'): 0.35781166427200817, Interval(0.4, 0.5, closed='right'): 0.4520571189836645, Interval(0.5, 0.6, closed='right'): 0.5516216469609114, Interval(0.6, 0.7, closed='right'): 0.6487768161741378, Interval(0.7, 0.8, closed='right'): 0.7640266198159613, Interval(0.8, 0.9, closed='right'): 0.8468250462224601, Interval(0.9, 1.0, closed='right'): 0.9633520862829202}`
子句,因此除了第一个测试之外,没有其他东西可以运行。
此逻辑的精简版本可能更像:
else
...或者,如果出于某些原因您确实想保留嵌套:
FOO1="2"
FOO2="2"
FOO3="-1"
if [ "${FOO1}" -eq -1 ]; then
echo "FOO1 is -1"
elif [ "${FOO2}" -eq -1 ]; then
echo "FOO2 is -1"
elif [ "${FOO3}" -eq -1 ]; then
echo "FOO3 is -1"
fi