Я хотел знать, как эхо последнему значению массива в сценарии оболочки. например, у меня есть следующий массив «
$ i = (« 1 »,« 2 »,« 3 »), и я хотел установить условие в последней позиции, это означает, что когда он попадает в позицию 3, он останавливается или говорит «hello world».
Как я могу это сделать?
EDIT shell - это сценарий оболочки, как в #! / bin / ш
Предполагая, что оболочка 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.
Вы действительно хотите перебирать все, но последние элементы? Затем сделайте следующее:
len=${#i[@]}
for elem in "${i[@]:0:len-1}"; do
echo "$elem"
done
echo "hello world"
В противном случае, каковы ваши фактические требования?
Предполагая, что оболочка 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.
Вы действительно хотите перебирать все, но последние элементы? Затем сделайте следующее:
len=${#i[@]}
for elem in "${i[@]:0:len-1}"; do
echo "$elem"
done
echo "hello world"
В противном случае, каковы ваши фактические требования?