Получил переменную с именем a
:
unset b
a="b"
Попытка принять этот оператор:
if test -n "$(eval \$${a})"; then echo Y; fi
# Outputs nothing
, который работает хорошо - он оценивает \$${a}
в $b
, что пусто и не отражается.
Попытка преобразовать вышеупомянутое во что-то похожее на это:
eval "if test -n \$${a}; then echo Y; fi"
# Outputs "Y"
, который не работает - но даже более странно:
eval "if test -z \$${a}; then echo Y; fi"
# Outputs "Y"
Почему это? Как один и тот же оператор выводит Y
для обоих вышеперечисленных? Могу ли я отформатировать первое утверждение, как я пытался использовать eval
на всем протяжении?