8

У меня есть командная строка, которая выводит другую командную строку, например:

> commandlineA param1 param2
  commandlineB param1

Я хотел бы иметь одно выполнение командной строки, которое будет запускать commandlineB с заданным параметром (ами).

Есть ли простой способ сделать это с помощью одной командной строки или мне нужно запустить небольшой файл bash, который будет хранить выходные данные в переменной, а затем запустить его?

Спасибо

2 ответа2

8

Похоже, вы сами с этим разобрались, но вы можете использовать:

$(command parameter1 parameter2)

Редактирование редактирования: приведенное ниже несколько неверно, хотя команда и запускает команду в подоболочке, оказывается, что переменные среды все еще будут доступны. Извините за вводящих в заблуждение людей ...

Изменить: это будет работать в подоболочке, любые неэкспортированные переменные среды не будут использоваться. Если вы хотите запустить команду в той же оболочке, вам нужно использовать:

eval $(command parameter1 parameter2)

Другой ответ - передать через bash:

echo 'uname -a' | bash 

Это также будет выполнено в подоболочке, для запуска в той же оболочке, которая вам понадобится:

echo 'uname -a' | bash -c

Кстати, вы можете также использовать обратные тики вместо синтаксиса $(), но это не рекомендуется.

3

Использовать этот:

commandlineA param1 param2 | bash

Пример:

echo "uname -a" | bash

Выход:

Linux k1104 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .