Shell 脚本数组输出

Shell 脚本数组输出

我想知道如何在 shell 脚本中回显数组的最后一个值。例如,我有以下数组”

$i=("1","2","3")

我想在最后一个位置设置一个条件,这意味着当它到达位置 3 时它会停止或说“hello world”。

我怎样才能做到这一点?

编辑 shell 是 shell 脚本,如 #!/bin/sh

答案1

假设 shell 是 Bash:

i=("a" "b" "c"); echo "${i[$((${#i[@]}-1))]}"

将输出c。构造${#i[@]}返回数组中元素的数量i,因此这$((${#i[@]}-1))是最后一个元素的索引。请参阅man bash有关详细信息,它包含一个名为数组

echo "${i[-1]}"

也回显c,因为负索引是从数组末尾开始计算的。

括号内的数组元素以空格分隔,而不是逗号。

答案2

你的数组语法是错误的:你想要i=(1 2 3)

最后一个元素是

$ echo "${i[-1]}"
3

然而,这闻起来像XY 问题

你真的想迭代除最后一个元素之外的所有元素吗?那么请执行以下操作:

len=${#i[@]}
for elem in "${i[@]:0:len-1}"; do
    echo "$elem"
done
echo "hello world"

否则,您的实际要求是什么?

相关内容