Это почти тот же вопрос, что и в этом посте , за исключением того, что я не хочу использовать eval
.
Короткий вопрос, я хочу выполнить команду echo aaa | grep a
, сначала сохранив ее в строковой переменной Command='echo aaa | grep a'
, а затем запустив ее без использования eval
.
В посте выше, выбранный ответ использовал eval
. Это работает для меня тоже. Меня очень беспокоит то, что есть множество предупреждений о eval
ниже, за которыми следуют некоторые попытки его обойти. Тем не менее, ни один из них не может решить мою проблему (по сути, ОП). Ниже я прокомментировал их попытки, но так как он был там в течение долгого времени, я думаю, что лучше задать вопрос снова с ограничением , а не , используя eval
.
Конкретный пример
Мне нужен сценарий оболочки, который запускает мою команду, когда я счастлив:
#!/bin/bash
# This script run-this-if.sh runs the commands when I am happy
# Warning: the following script does not work (on nose)
if [ "$1" == "I-am-happy" ]; then
"$2"
fi
$ run-if.sh I-am-happy [insert-any-command]