bash가 매개변수를 변환하는 것을 방지하는 방법은 무엇입니까?

bash가 매개변수를 변환하는 것을 방지하는 방법은 무엇입니까?

다른 파일을 찾기 위해 스크립트에 대한 인수를 사용하려고 합니다. 문제는 명령 x.*줄에서 스크립트에 인수를 제공 하면 x.sh.x.*

명령줄의 스크립트: . 인쇄 ./script.sh x.*하려고 하면 .$1x.sh

답변1

스크립트 내에서는 이 작업을 수행할 수 없습니다. *~ 해야 하다탈출하다그렇지 않으면 파일 이름과 일치하려고 시도합니다(귀하의 경우 파일 이름의 문자열과 일치하는 전역 연산자 x.와 같은 모든 것 ). *기본적으로 세 가지 방법으로 이 작업을 수행할 수 있습니다. 문자열을 작은따옴표나 큰따옴표로 묶습니다.

./script.sh "x.*"
./script.sh 'x.*'

또는 문제가 되는 문자 앞에 백슬래시를 추가합니다.

./script.sh x.\*

Jeff가 의견에서 언급했듯이(감사합니다) 다음을 통해 전역 확장을 비활성화할 수도 있습니다.

set -o noglob

set +o noglob원하는 경우 다시 켤 수 있습니다.

관련 정보