Cd аргумент из переменной из переменной

У меня есть переменная, содержащая путь. В частности, мне нужно, чтобы эта переменная считывала путь из второго файла (ввода). Вот почему я использую awk. Переменная выглядит примерно так:

path_dock1=`awk 'NR==33 {print $1}' input`

В дополнение к path_dock1 существуют другие переменные path_dock, которые объявлены таким же образом.

path_dock1=`awk 'NR==33 {print $1}' input`
path_dock2=`awk 'NR==34 {print $1}' input`
path_dock3=`awk 'NR==35 {print $1}' input`
...

Я бы хотел, чтобы такая переменная использовалась в цикле for. В частности, я хочу использовать эту переменную в качестве аргумента команды cd. Для этого я использую переменную цикла for, которая работает от 1 до n, где n - общее количество path_dock. переменные.

for t in $(seq 1 1000)
do
    cd $path_dock$t
    .... 
done

Конечно, эта стратегия - всего лишь попытка, и она не работает. Есть ли у вас предложение передать аргумент команде cd, сделанной таким образом?

Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
49
2

Ответы 2

Используйте расширение параметра:

for t in $(seq 1 1000)
do
    tmp=path_dock${t}
    cd ${!tmp}
    .... 
done

Собственно, это работает. Спасибо за быстрый ответ и спасибо пользователям этого форума ... честно говоря, он работает очень хорошо, и очень трудно найти квалифицированных людей в такого рода социальных сетях. Еще раз спасибо.

danilo 06.11.2018 10:32

@danilo, на SO вы можете отказаться от голосования за полезные ответы людей, чтобы поблагодарить их и выбрать любой из ответов как правильный ответ из всех, ура.

RavinderSingh13 06.11.2018 10:35

@ RavinderSingh13 Я пытаюсь проголосовать, но ... Как мне это сделать?

danilo 06.11.2018 11:27

@danilo, может быть, ваша репутация на данный момент меньше, теперь вы можете попробовать выбрать любой ответ как правильный, а затем, когда у вас будет достаточно репо на SO, тогда вы откажетесь от голосов, ура.

RavinderSingh13 06.11.2018 11:28

Используйте массив вместо множества пронумерованных переменных

path_dock=()
for i in {1..100} ; do
    path_dock+=($(awk 'NR=='$i' {print $1}' input))
done
...
for i in {1..100} ; do
    cd "${path_dock[i]}"
    ...
done

1) $i бесполезен внутри одинарных кавычек 2) Было бы лучше вызвать awk только один раз с диапазоном, чем называть его n раз 3) set -f

mickp 06.11.2018 17:04

@mickp: исправлено 1)

choroba 06.11.2018 17:47

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