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

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

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

$ 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그냥 대신에 이를 볼 것으로 예상됩니다 .file1.txt./file_lister.sh *.txt

다른 사람들이 의견에서 제안한 것처럼 인쇄하려면모두첫 번째 인수 대신에 수행할 수 있는 작업이 많습니다. 가장 쉬운 방법은 $1(첫 번째 인수)를 $@(모든 인수)로 변경하는 것입니다.

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

보다스택 오버플로에 대한 이 질문스크립트에서 인수 처리에 대한 자세한 내용을 확인하세요.

관련 정보