数组元素行为异常



>我正在尝试学习Bash语法。正如我正在阅读的文档所证实的那样,我希望 ARRAYNAME[0] 访问元素 1,ARRAYNAME[1] 访问元素 2。但是,我的脚本似乎发生了一些有趣的事情。尝试访问 ARRAYNAME[0] 似乎给了我一个空字符串,因为我在下面的评论中显示了输出。
以下脚本是我为使输出按预期打印而编辑的内容。我不认为我的问题来自运行zsh因为我尝试使用 /bin/sh 运行此脚本。我在这里没有看到什么?
提前谢谢。

Test.sh:

#!/bin/zsh
NAMES=(Homer Marge Bart Lisa Maggy)
OUTPUTSTRING="The Simpsons family consists of: "
FAMILY="This list is empty :("
echo "Names[0]: ${NAMES[0]}"           # prints "Names[0]: "
echo "Names[1]: ${NAMES[1]}"           # prints "Names[1]: Homer"
if [ ${#NAMES[@]} -gt 0 ] ; then
    FAMILY="${NAMES[1]}"
else                                   # does not go in to else
    echo "$OUTPUTSTRING""$FAMILY" 
    exit 0
fi
NAMECOUNTER=2
while [ $NAMECOUNTER -le ${#NAMES[@]} ]; do      #-lt if behaviour was as I expected
    FAMILY+=", ${NAMES[$NAMECOUNTER]}"
    NAMECOUNTER=$((NAMECOUNTER+1))
done
echo "The Simpsons family consists of: $FAMILY"   # The Simpsons family consists of: Homer, Marge, Bart, Lisa, Maggy

您正在使用 zsh(为从 1 开始的数组编制索引(执行一个bash脚本(该脚本期望从 0 开始索引数组(。将舍邦更改为

#!/bin/bash

(或任何正确的路径(以确保脚本在作为可执行文件运行时由bash执行。或者,使用 bash myscript 而不是例如 ./myscript 显式运行带有bashmyscript

最新更新