[@ MadPhysicist напоминает мне, что мне все равно придется избегать расширений переменных.Мой ответ оставлен здесь для справки, но @MadPhysicist прав: мой ответ, вероятно, не отвечает на заданный вопрос.]
Используйте eval
.
Попробуйте выполнить это упражнение, набрав следующие четыреКоманды в командной строке вашей оболочки.Я полагаю, что упражнение, вероятно, ответит на ваш вопрос.
$ X=55
$ A='echo $(( $X + $X ))'
$ echo "$A"
$ eval "$A"
Как только упражнение покажет вам, что делает встроенная команда оболочки eval
, вы можете получить желаемый эффект, используя eval
на последнем автомате в вашей цепочке.
[Обратите внимание, что в упражнении написано: A='echo $(( $X + $X ))'
.Это не говорит, A=`echo $(( $X + $X ))`
.Обратите внимание, как кавычки наклоняются.Здесь вам нужны обычные одинарные кавычки, а не обратные кавычки.]