while+shiftをカプセル化するコマンドはありますか?

while+shiftをカプセル化するコマンドはありますか?

私の質問はxargs。私は車輪を再発明しなければなりません。では、これに関して何が存在するのでしょうか。

while_do_it.sh:

#! /bin/bash

while (( $# > 0 ))
do    
    echo "($1)"
    shift
done

に分けることができます。

while.sh

#! /bin/bash

command="$1"
shift

while (( $# > 0 ))
do
    "$command"  "$1" 
    shift
done

do_it.sh

#! /bin/bash

echo "($1)"

アプリケーション:

$ cat << EOF | xargs ./while.sh ./do_it.sh
foo 
bar 
qux 
EOF 
(Ctrl+D)

(foo)
(bar)
(qux)

ベストアンサー1

:を使用してこれを行うには、xargs一度に1ワードずつ入力を処理するように指示します。

xargs -n 1 ./do_it.sh <<EOF
foo
bar
qux
EOF

ただし、一度に1つのコマンドライン引数、つまりループを処理するシェル構成がすでにありますfor

for i; do echo "($i)"; done

おすすめ記事