쉘 스크립트에서 여러 이벤트에 와일드카드를 사용하는 방법은 무엇입니까?

쉘 스크립트에서 여러 이벤트에 와일드카드를 사용하는 방법은 무엇입니까?

패턴과 일치하는 모든 입력에 와일드카드 입력을 사용하고 싶습니다. 예:

$ cat file_lister.sh
echo $1

$ ls *.txt
file1.txt
file2.txt
file3.txt

$ ./file_lister.sh ./*.txt
file1.txt

하지만 내 스크립트가 인쇄될 것으로 예상합니다.

file1.txt
file2.txt
file3.txt

답변1

스크립트를 실행할 때:

$ ./file_lister.sh ./*.txt

쉘은 ./*.txt으로 확장되므로 ./file1.txt ./file2.txt ./file3.txt확장 후 실제로 다음을 수행하게 됩니다.

$ ./file_lister.sh ./file1.txt ./file2.txt ./file3.txt

스크립트는 첫 번째 매개변수를 인쇄합니다.

echo $1

$1스크립트에 전달된 첫 번째 인수에 해당합니다. 이 경우에는 ./file1.txt- I'd like to see it 대신에 file1.txt(실제로 실행하지 않는 한 ./file_lister.sh *.txt)입니다.

다른 사람들이 의견에서 제안한 것처럼 인쇄하려면모두첫 번째 주장보다 더 많은 일을 할 수 있습니다. 가장 간단한 방법은 $1(첫 번째 매개변수)를 $@(모든 매개변수)로 변경하는 것입니다.

#!/bin/bash
printf '%s\n' "$@"

바라보다스택 오버플로에 대한 이 질문스크립트의 매개변수 처리에 대한 추가 정보

관련 정보