Я хотел знать, как повторить последнее значение массива в сценарии оболочки. например, у меня есть следующий массив"
$i = ("1", "2", "3")
и я хотел установить условие в последней позиции, подразумевая, что, когда она входит в положение 3, она останавливается, или она говорит "привет мир".
Как я могу сделать это?
РЕДАКТИРОВАНИЕ оболочка является сценарием оболочки как в #!/bin/sh
Предположение, что оболочка является Bash:
i=("a" "b" "c"); echo "${i[$((${#i[@]}-1))]}"
произведет c
. Конструкция ${#i[@]}
возвраты число элементов в массиве i
, так, чтобы $((${#i[@]}-1))
был индекс последнего элемента. См. man bash
для деталей; это содержит раздел, названный Массивы .
echo "${i[-1]}"
также эхо c
, потому что отрицательные индексы считаются от конца массива.
И элементы массива в круглых скобках разделяются пробелами не запятые.
Ваш синтаксис массива является неправильным: Вы хотите i=(1 2 3)
, последний элемент
$ echo "${i[-1]}"
3
Однако, это пахнет как вопрос XY .
Вы на самом деле хотите выполнить итерации по all-but-the-last элементам? Затем сделайте это:
len=${#i[@]}
for elem in "${i[@]:0:len-1}"; do
echo "$elem"
done
echo "hello world"
Иначе, каковы Ваши фактические требования?