たとえばfooFun
、PDF ファイルに対して何らかの処理を行う という関数を書きたいとします。次のように、両方の方法で実行できるようにしたいと思います。
$ fooFun foo.pdf
$ ls *.pdf | fooFun
何か案は?ありがとう。
たとえばfooFun
、PDF ファイルに対して何らかの処理を行う という関数を書きたいとします。次のように、両方の方法で実行できるようにしたいと思います。
$ fooFun foo.pdf
$ ls *.pdf | fooFun
何か案は?ありがとう。
シェル関数でこれを簡単に実行できるとは思いません。より良いアイデアは、それをスクリプトにして、コマンドライン引数を取り、次のように 2 番目のスタイルを実現することxargs
です。
ls *.pdf | xargs fooFun
@larsmansに同意します。引数をパラメーターとして渡すことに固執することをお勧めします。ただし、求めていることを達成する方法は次のとおりです。
foofun() {
local args arg
if [[ $# -eq 0 ]]; then
args=()
# consume stdin
while IFS= read -r arg; do args+=($arg); done
else
args=("$@")
fi
# do something with "${args[@]}"
}