добавляет n-ю строку из файла x в конце файла y

Я согласен, что использование массива, как показано в других ответах, является лучшим способом решения реальной задачи OP. Но эти ответы прямо не отвечают на вопрос, как указано, поэтому я сделаю это:

Вот как вы можете сделать это с помощью eval для доступа к переменным, следуя тесному способу, который дал OP как его код:

INPUT1=/tmp/dir1
INPUT2=/tmp/dir2
INPUT3=/tmp/dir3

for i in {1..3} ; do
    eval "echo \$INPUT$i"
done

Выход:

/tmp/dir1
/tmp/dir2
/tmp/dir3
1
задан 29 June 2015 в 16:14

1 ответ

Я вижу вашу проблему, вы используете одинарные кавычки. Они не позволят расширять переменную Bash $MYN. Вы можете усложнить ситуацию, сообщив awk новую переменную, или потому, что это так просто, вы можете просто переключиться на двойные кавычки:

awk "NR==$MYN" x

Я бы использовал sed, но я не вижу никаких очевидных проблем с вашей логикой

MYN=4
sed "${MYN}q;d" x >> y

Кажется, что он работает как ожидалось:

$ for i in $(seq 1 10); do echo $i >> x; done
$ sed "${MYN}q;d" x
4
2
ответ дан 23 May 2018 в 19:23

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

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