Я согласен, что использование массива, как показано в других ответах, является лучшим способом решения реальной задачи 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
Я вижу вашу проблему, вы используете одинарные кавычки. Они не позволят расширять переменную 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