Командная строка Unix для повторения команды с каналами

Я хочу записать сценарий, который повторит командную строку, которая обычно содержит каналы

./myscript.sh ls -lart |grep ^d

И в myscript.sh Я делаю набор материала и затем хочу выполниться ls -lart |grep ^d и передайте вывод по каналу от этого во что-то еще.

(извините заранее, если это действительно просто и имеет решение с 1 лайнером).

До сих пор я попробовал

$@ | someothercommand

и

$* | someothercommand

Но напрасно...

3
задан 03.03.2010, 08:00

1 ответ

Путем оболочка анализирует средства командной строки, что исходные данные к Вашему сценарию оболочки остановятся, когда это доберется до канала. Что необходимо будет, вероятно, сделать для обхода, это помещается командная строка в кавычках, таким образом:

./myscript.sh "ls -lart |grep ^d"

Затем в Вашем сценарии используют eval команда для выполнения его, как в:

 eval "$@" | someothercommand 
8
ответ дан 07.12.2019, 23:18

Теги

Похожие вопросы