У меня есть командная строка, которая выводит другую командную строку, например:
> commandlineA param1 param2
commandlineB param1
Я хотел бы иметь одно выполнение командной строки, которое будет запускать commandlineB с заданным параметром (ами).
Есть ли простой способ сделать это с помощью одной командной строки или мне нужно запустить небольшой файл bash, который будет хранить выходные данные в переменной, а затем запустить его?
Спасибо
ubuntu
command-line
bash
Лиор Оана
источник
источник
Ответы:
Похоже, вы сами с этим разобрались, но вы можете использовать:
Правка правки: приведенное ниже несколько неверно, хотя команда и запускает команду в подоболочке, оказывается, что переменные среды все еще будут доступны. Извините за вводящих в заблуждение людей ...
Изменить: это будет работать в подоболочке, любые неэкспортированные переменные среды не будут использоваться. Если вы хотите запустить команду в той же оболочке, вам нужно использовать:
Другой ответ дан, чтобы пропустить через bash сам:
Это также будет выполнено в подоболочке, для запуска в той же оболочке, что вам потребуется:
Кстати, вы можете также использовать обратные тики вместо синтаксиса $ (), но это не рекомендуется .
источник
eval
здесь. Если у вас есть причина, пожалуйста, объясните. (3) Ваш последний пример (с-c
) совершенно неверен.Использовать этот:
Пример:
Вывод:
источник
$(commandlineA param1 param2)
printf '\143\144\040\057\n' | bash
в конечном счете, это запрет, поскольку команда выполняется в новом отдельном (и временном) процессе оболочки. Напротив,$(printf '\143\144\040\057\n')
текущая, активная, интерактивная оболочка изменит каталог.