Могу ли я выполнять вложенные или связанные команды в оболочке UNIX? - PullRequest
5 голосов
/ 19 сентября 2010

Могу ли я выполнить команду в другой команде в оболочках UNIX?

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

command x, затем command y,

где command y Я хочу использовать вывод command x?

Ответы [ 3 ]

13 голосов
/ 19 сентября 2010

Для этого можно использовать обратные кавычки.

Например, это будет cat.txt

cat `echo file.txt`

И это напечатает дату

повторяет дату `date`

Код между обратными кавычками будет выполнен и заменен его результатом.

6 голосов
/ 19 сентября 2010

Вы можете сделать что-то вроде;

x=$(grep $(dirname "$path") file)

здесь dirname "$path" будет запущен первым и его результат будет подставлен, а затем будет запущен grep, ищущий результат dirname в file

3 голосов
/ 19 сентября 2010

Что именно вы пытаетесь сделать?Это не ясно из команд, которые вы выполняете.Возможно, если вы опишите, что вы ищете, мы можем указать вам правильное направление.Если вы хотите выполнить команду для диапазона имен файлов (или каталогов), возвращаемых командой «find», Колин верен, вам нужно посмотреть опцию «-exec» в «find».Если вы хотите выполнить команду над кучей аргументов, перечисленных в файле или поступающих из stdin, вам нужно проверить команды "xargs".Если вы хотите поместить вывод одной команды в командную строку другой команды, то использование «$ (команда)» (или «команда» [замените «на обратную кавычку]) сделает эту работу.Есть много способов сделать это, но не зная, что вы пытаетесь сделать, трудно быть более полезным.

...