때때로 나는 많은 파일에 내 스크립트를 사용하고 싶습니다.
내가 이것을 사용하는 이유는 다음과 같습니다.
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
이러한 측면 중 많은 부분이 자세히 설명될 것입니다.