スクリプトを検討してくださいpass_command
ls | "$@"
名前付きコマンドを引数として受け入れます。
pass_command sort
#prints files sorted
すべての実用的な目的にはこれで十分です。ところで気になります。複合コマンドを渡すメカニズムはありますか?それはまるで
pass_command (sort | uniq) #Forgive the silly example.
編集:より複雑な例では、この質問が発生しました。
until who | grep mary
do
sleep 60
until
Mary にログインするようにシグナルを送信します。私は特定の出来事を示すためにこれを要約したいと思います。直感的なアイデアは次のとおりです。
#watchfor
until "$@"
do
sleep 60
done
それから電話してください。
watchfor (who | grep mary)
これが私の考えです。パラメータに名前を付けると、上記の方法が正しく機能します。これは私にこれについて考えさせました。
私は信号コマンドを隠す最も慣用的な方法を理解しようとしているようです。
答え1
eval
スクリプトで単純なコマンド以上を使用する必要があります$@
(スクリプトのパラメータは引用符付きの文字列として渡す必要があります)。
ls | eval "$@"
しかし、言い換えれば、これも関連しています
pass_command sort | uniq
つまり、コマンドを渡して出力に使用しますsort
。uniq
Unixのパイプライン化機能はほとんどの実際のアプリケーションを扱うように見えるため、そのようなスクリプトや関数は実際には使用されません。