Я хочу записать сценарий, который повторит командную строку, которая обычно содержит каналы
./myscript.sh ls -lart |grep ^d
И в myscript.sh
Я делаю набор материала и затем хочу выполниться ls -lart |grep ^d
и передайте вывод по каналу от этого во что-то еще.
(извините заранее, если это действительно просто и имеет решение с 1 лайнером).
До сих пор я попробовал
$@ | someothercommand
и
$* | someothercommand
Но напрасно...
Путем оболочка анализирует средства командной строки, что исходные данные к Вашему сценарию оболочки остановятся, когда это доберется до канала. Что необходимо будет, вероятно, сделать для обхода, это помещается командная строка в кавычках, таким образом:
./myscript.sh "ls -lart |grep ^d"
Затем в Вашем сценарии используют eval
команда для выполнения его, как в:
eval "$@" | someothercommand