Shell Script намерен прочитать аргумент после '|' - PullRequest
0 голосов
/ 27 марта 2020

Привет, мне было интересно, как читать аргумент после "|" pipe из сценария оболочки.

Например, когда я запускаю ./tmp.sh ls -la | sort Я мог получить только 2 аргумента: «ls» и «-la».

Есть ли способ прочитать «| sort» без изменения команды и реализовать только с помощью сценария оболочки?

Спасибо большое !!

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Один из способов - передать всю команду в виде строки в ваш сценарий.

./tmp.sh -c "ls -la | sort"

... или без флага ...

./tmp.sh "ls -la | sort"

После этого вы можете разбить строку на массив в вашем скрипте .

0 голосов
/ 27 марта 2020

Полагаю, вы могли бы проверить ps axf, но частью красоты труб является слабая связь, которую они дают, потому что bash знает, что находится в вашем конвейере, а не отдельные части конвейера. Это упрощает написание фильтров.

...