0

たとえばfooFun、PDF ファイルに対して何らかの処理を行う という関数を書きたいとします。次のように、両方の方法で実行できるようにしたいと思います。

  $ fooFun foo.pdf
  $ ls *.pdf | fooFun

何か案は?ありがとう。

4

2 に答える 2

1

シェル関数でこれを簡単に実行できるとは思いません。より良いアイデアは、それをスクリプトにして、コマンドライン引数を取り、次のように 2 番目のスタイルを実現することxargsです。

 ls *.pdf | xargs fooFun
于 2012-05-15T21:50:02.443 に答える
0

@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[@]}"
}
于 2012-05-16T10:53:30.403 に答える