Xargs

是否有一個命令封裝了 while+shift…?

  • February 25, 2022

我的問題與編寫可能與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)

如果您想使用 執行此操作xargs,請告訴它一次處理其輸入一個單詞:

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

但是已經有一個 shell 結構可以一次處理一個命令行參數,即for循環:

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

引用自:https://unix.stackexchange.com/questions/692146