我正在使用 bash,版本:
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
我编写了以下脚本:
#!/usr/bin/bash
a=11
b=4
c=7+b
if [[ a -eq c ]]
then
echo "ok"
else
echo "not ok"
fi
它打印“ok”。当我将其更改a
为 10 时,它打印“not ok”。所以我有一个简单的问题,do[[ ]]
和(( ))
makes 是否“传递求值”(在我的示例中,这意味着c
首先求值为7+b
然后b
求值为4
最后它总体变为11
)?
我之所以问这个问题,是因为我与人工智能(chatGPT、gemini、claude)发生了严重的“争斗”,他们说这种评估不会发生,但我的例子却表明并非如此(他们说c
被评估为7+b
,并且由于它不是一个数字,0
因此取该值)...提前致谢