LINUX.ORG.RU

Bash. Вывести в цикле все слова кроме первого

 , ,


0

1

Добрый день. Имеется переменная IMAGE_TAGS, содержащая строку вида «v12 v11 v10 v9 v8» Мне необходимо отбросить первый элемент, в данном случае v12, и вывести в цикле все оставшиеся элементы, каждый с новой строки.

Решаю эту задачу следующим кодом:

IMAGE_TAGS=`echo ${IMAGE_TAGS} | awk '{$1=""; print $0}' | cut -c 2-`
  for j in ${IMAGE_TAGS}
  do
    echo ${j}
  done

Подскажите, можно ли поступить проще?



Последнее исправление: bohdan1993 (всего исправлений: 1)

Ответ на: комментарий от aol

Правильно, оставляет, это я невнимательно читаю. Нужно unset IMAGE_TAGS[0]

IMAGE_TAGS="v12 v11 v10 v9 v8"
IMAGE_TAGS=(${IMAGE_TAGS})
unset IMAGE_TAGS[0]

for i in ${IMAGE_TAGS[@]} ; do
    echo ${i}
done

sin_a ★★★★★
()
Последнее исправление: sin_a (всего исправлений: 1)
read __unused IMAGE_TAGS <<< "$IMAGE_TAGS"

for j in ${IMAGE_TAGS}
do
        echo ${j}
done
moonmadness
()
Последнее исправление: moonmadness (всего исправлений: 1)
Ответ на: комментарий от sin_a

эт у меня прицел погнулся.. показалось, это был ответ на мой вопрос ))

aol ★★★★★
()
Ответ на: комментарий от bohdan1993

Имеется переменная IMAGE_TAGS, содержащая строку вида «v12 v11 v10 v9 v8»

awk обнуляет 1-й столбец

какой первый столбец, камоооон….

aol ★★★★★
()

Подскажите, можно ли поступить проще?

Банально, не трогая структуру данных, ввести флаг isFIRST (0/1) и пропустить обработку первой иттерации цикла.

futurama ★★★★★
()
D="v12 v11 v10 v9 v8" ; for i in ${D#* }; do echo $i; done
vel ★★★★★
()
echo $IMAGE_TAGS | tr ' ' '\n' | tail +2
anonymous
()

Подскажите, можно ли поступить проще?

проще не использовать баш

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.