Shell scipt массив производится

Я хотел знать, как повторить последнее значение массива в сценарии оболочки. например, у меня есть следующий массив"

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

и я хотел установить условие в последней позиции, подразумевая, что, когда она входит в положение 3, она останавливается, или она говорит "привет мир".

Как я могу сделать это?

РЕДАКТИРОВАНИЕ оболочка является сценарием оболочки как в #!/bin/sh

0
задан 18 August 2017 в 14:08

2 ответа

Предположение, что оболочка является Bash:

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

произведет c. Конструкция ${#i[@]} возвраты число элементов в массиве i, так, чтобы $((${#i[@]}-1)) был индекс последнего элемента. См. man bash для деталей; это содержит раздел, названный Массивы .

echo "${i[-1]}"

также эхо c, потому что отрицательные индексы считаются от конца массива.

И элементы массива в круглых скобках разделяются пробелами не запятые.

2
ответ дан 2 November 2019 в 10:09

Ваш синтаксис массива является неправильным: Вы хотите 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"

Иначе, каковы Ваши фактические требования?

0
ответ дан 2 November 2019 в 10:09

Другие вопросы по тегам:

Похожие вопросы: