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한 번에 한 단어씩 입력을 처리하도록 지시하십시오.

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

그러나 한 번에 하나의 명령줄 인수, 즉 루프를 처리하는 셸 구성이 이미 있습니다 for.

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

관련 정보