Условно-экспортная переменная командной строки

Если я убегу

export COMMAND=nonexistentcommand && which $COMMAND >/dev/null || \ (echo "download filewithcommand.sh" && export COMMAND=./filewithcommand.sh) echo "command: $COMMAND" 

я получил

 download filewithcommand.sh command: nonexistentcommand 

Но я думаю, что это должно быть

 download filewithcommand.sh command: ./filewithcommand. 

Что случилось с этим предложением?

  • Переменная IFS игнорируется в системе ()
  • Экспортирование переменной среды
  • Косвенно развернуть переменные в оболочке
  • Как запустить мою программу C из любой точки системы (Ubuntu 10.10)?
  • Значение переменной не распознается после использования gnu parallel?
  • Почему я должен повторно устанавливать env vars в tmux при повторном подключении?
  • Как определить, где определена переменная среды?
  • Что указывает период, когда переменная окружения задана как «VARIABLE_NAME =.»
  • One Solution collect form web for “Условно-экспортная переменная командной строки”

    COMMAND установлен в nonexistentcommand и это результат, который вы получаете. Нормальный.

    Вы устанавливаете COMMAND в какое-то другое значение, но оно находится в подоболочке (заключено в круглые скобки), поэтому оно не влияет на среду родительской оболочки. Вы хотели использовать { braces } (который не вилка подоболочки) вместо ( круглые скобки ) ?

    Linux и Unix - лучшая ОС в мире.