Запустите команду, сохраненную в переменной, чтобы эхо в файл

Как заставить хранимую команду работать в следующем сценарии:

CMD='echo "test" >> test.txt' $CMD 

Он будет работать для других сценариев, таких как:

 CMD='mkdir test' $CMD 

One Solution collect form web for “Запустите команду, сохраненную в переменной, чтобы эхо в файл”

Правильное правило должно быть:

  • Сохранение данных в переменных, Сохранение кода в функциях.

Итак, правильный способ заставить эту команду работать: сделать функцию:

 first_command (){ echo "test" >> test.txt; } 

Вызовите функцию:

 first_command 

Вот и все.


Неправильно хранить команду в виде строки.
Еще хуже использовать eval для запуска таких команд.

Возможно, это работает для простой команды, но скрытая проблема заключается в том, что шаг eval удаляет цитирование команды.

Если вы сохраните эту команду

 CMD='echo "test" >> test.txt' 

eval "$CMD" (да, даже цитируется) выполнит эту команду:

 echo test >> test.txt 

Нет цитат !!!.

Очень легко забыть, что котировки нуждаются в специальном управлении с eval. И делать кавычки, работающие правильно, всегда сложно.

Попытка выполнить команду, хранящуюся в переменной, которая не имеет повторных указаний (основная проблема, требующая использования eval) без шага eval, по-прежнему сложна и не работает во всех случаях.

Пожалуйста, прочитайте отличное введение в проблему:
Я пытаюсь ввести команду в переменную, но сложные случаи всегда терпят неудачу!

  • Проверьте, содержит ли строка строку подстроки
  • Переменные баша в команде
  • имя сценария скрипта echo text name для циклизации нескольких текстов
  • Передача переменной из одного сценария в другой
  • В сценарии bash, что отличается между объявлением и нормальной переменной?
  • Поведение задания массива
  • Как сохранить статус последнего выхода после теста
  • Сценарий Bash для заполнения шаблона
  • Отложить переменное расширение до подоболочки
  • Как изменить переменные
  • Shell: как использовать 2 переменные с условием
  • Linux и Unix - лучшая ОС в мире.