shell 为什么这个bash脚本即使在输入错误的情况下也能正常工作

j13ufse2  于 2023-02-24  发布在  Shell
关注(0)|答案(2)|浏览(115)

所以我有这个bash脚本来查找n项的Fibonacci序列,它肯定不是很好的代码,但是我注意到它仍然可以处理一个错字

read -p "Enter which term of fibo seq to find: " n

table=(1 1)

for i in $(seq 0 $(($n - 1)) )
do
    if [[ -z ${table[$i]} ]]; then
        a1=$(( $i - 1 ))
        a2=$(( $I - 2 ))
        val=$(( ${table[$a1]} + ${table[$a2]} ))

        table+=($val)
    fi
done

echo ${table[@]}

在为a2计算表达式的if语句中,有一个大写的“I”而不是“i”。我的理解是shellscript是区分大小写的,但我是第一次接触它。所以有人能解释一下为什么它能工作吗?

uyto3xhc

uyto3xhc1#

a2将始终为-2。从bash 4.2开始,您可以使用负索引来索引数组,就像Python中一样。因此,无论是否存在输入错误,您始终访问数组中倒数第二个元素。

i34xakig

i34xakig2#

没有声明$I的语句a2=$(( $I - 2 ))等于a2=$(( - 2 )),这意味着a2将始终等于-2

相关问题