Я не понимаю, почему это не работает:
TEXT="blah" echo $TEXT #echoes nothing
Я думал, что это может быть из-за встроенного эха, поэтому я попробовал это:
TEXT="blah" `which echo` $TEXT #still nothing
Что я скучаю?
Оболочка разворачивает переменные, прежде чем она выполнит команду, даже прежде чем она выполнит присвоения.
Cf.
text=blah ; echo $text
или
text=blah eval 'echo $text'
Первый работает, потому что присвоение выполняется как отдельная команда. Второй работает потому что $text
единственно заключается в кавычки, который предотвращает его расширение, когда оболочка обрабатывает команду; когда eval
позже работает, переменной уже присвоили значение.