аргумент cd, сделанный из переменной, из переменной - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть переменная, которая содержит путь. В частности, мне нужно, чтобы эта переменная считывала путь из второго файла (входной). Вот почему я использую 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, сделанной таким образом?

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

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

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

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
0 голосов
/ 06 ноября 2018

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

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