Если я правильно понимаю, что вы ищете, вы пытаетесь программно построить имя переменной и затем получить доступ к значению этой переменной. Для этого обычно требуется оператор eval
:
eval "echo \$TMUX_$(echo 1)"
Важные особенности этого оператора включают использование двойных кавычек, так что $( )
правильно интерпретируется как подстановка команды, и экранирование первого $
, чтобы он не оценивался в первый раз через. Еще один способ добиться того же -
eval 'echo $TMUX_'"$(echo 1)"
, где в этом случае я использовал две строки, которые автоматически объединяются. Первая заключена в одинарные кавычки, поэтому сначала она не оценивается.
Существует одно исключение из требования eval
: в Bash есть метод косвенной ссылки, ${!name}
, для случаев, когда вы хотите использовать содержимое переменной в качестве имени переменной. Вы можете использовать это следующим образом:
tmux_var = "TMUX_$(echo 1)"
echo ${!tmux_var}
Я не уверен, есть ли способ сделать это в одном выражении, так как для этого нужно иметь именованную переменную.
P.S. Я предполагаю, что echo 1
- это просто замена для более сложной команды; -)