와일드카드를 스크립트 입력으로 반복

와일드카드를 스크립트 입력으로 반복

때때로 나는 많은 파일에 내 스크립트를 사용하고 싶습니다.

내가 이것을 사용하는 이유는 다음과 같습니다.

for etminput in $1
do
    #process
done

그러나 이것은 첫 번째 입력만 제공합니다. 각 와일드카드 일치에 대해 이 프로세스를 어떻게 수행할 수 있습니까?

답변1

Bourne과 유사한 쉘에서 스크립트의 모든 매개변수를 반복하려면 다음과 같이 하십시오.

for i do
  something with "$i"
done

다음과 같이 할 수도 있습니다.

for i in "$@"; do
  something with "$i"
done

그러나 더 길고 휴대성이 떨어집니다(최신 케이스에는 적합하지만).

알아채다:

for i; do
  something with "$i"
done

Bourne도 POSIX도 아니므로 피해야 합니다(비록 많은 쉘에서 작동하지만).


완전성을 기하기 위해 Bourne 쉘이 아닌 경우:

csh/tcsh

@ i = 1
while ($i <= $#argv)
  something with $argv[$i]:q
  @ i++
end

다음은 사용할 수 없습니다:

foreach i ($argv:q)
  something with $i:q
end

이는 빈 매개변수를 건너뛰기 때문입니다.

RC/아캉가

for (i) something with $i

( rc보통은 껍질이다.~해야 한다그림).

영어

for (i=$*) something with $i

(es는 스테로이드의 rc입니다).

물고기

for i in $argv
  something with $i
end

다루기 힘든

Bourne 구문을 허용하지만 다음과 같은 더 짧은 구문도 지원합니다.

for i ("$@") something with "$i"

답변2

#!/bin/bash

n=1
echo "$0이 $#개의 인수를 얻습니다..."
그리고 [ $# -gt 0 ] ;do
  에코 "$n: $1"
  옮기다
  n=$(($n + 1 ))
완벽한

또는 "$* 및 $@를 사용하여 매개변수 나열"을 찾으세요
.http://www.tldp.org/LDP/abs/html/abs-guide.html
이러한 측면 중 많은 부분이 자세히 설명될 것입니다.

관련 정보