for i in {1..99}
do
if ([ $((i % 2)) -eq 1 ])
then
echo $i
fi
done
我正在学习 bash,并且我正在尝试更好地理解第 3 行。为什么$((i % 2))
必须用括号双层包裹,为什么我不能把$
旁边的符号i
like:
([ (($i % 2)) -eq 1 ])
or
([ ($(i % 2)) -eq 1 ])
?
$(( expression ))
是用于计算算术表达式并用该表达式的结果替换此语法的语法。它记录在 Bash 手册中here;
算术表达式的语法描述here。推杆$
变量名之前是可选的,所以你也可以将其写为$(($i % 2))
.
您必须将其括在两个括号中,因为$(...)
已经有了意义,它用于命令替换: $(some command)
执行some command
然后替换为命令的输出。
你不需要括号[ ... ]
。正常的写法if
声明将是
if [ $((i % 2)) -eq 1 ]
您也可以将其写为
if (( i % 2 == 1 ))
(( expression ))
计算算术表达式,然后根据结果是零还是非零设置其退出状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)