인용된 인수를 구문 분석하는 Bash 스크립트

인용된 인수를 구문 분석하는 Bash 스크립트

이 기사를 고려하십시오.시험:

#!/bin/bash
echo $1

다음 명령과 호출:

$ echo "A B"
A B
$ echo ""A B""
A B
$ echo """A B"""
A B
$ echo """A B"""
A B

$ ./test "A B"
A B
$ ./test ""A B""
A
$ ./test """A B"""
A B
$ ./test """"A B""""
A

내가 전화한 이유를 설명해 줄 수 있는 사람이 있나요?시험동작이 명령과 다릅니다.에코아니면 관련 문서를 가리키시겠습니까?

답변1

echo직렬로 연결되어 있기 때문에모두매개변수는 이를 인쇄하며 스크립트는 다음으로 제한됩니다.첫 번째토론. 스크립트에서 및 를 사용해야 합니다 "$@".$1

테스트에 제공하는 매개변수를 살펴보겠습니다.

  • ./test "A B"
    • 매개변수 1개, 문자열 3개AspaceB
  • ./test ""A B""
    • 두 가지 인수
      • 먼저 empty string연결하세요A
      • 둘째, B연결하다empty string
  • ./test """A B"""
    • empty string연결 AspaceB및 연결이 있는 매개변수empty string
  • ./test """"A B""""
    • 두 가지 인수
      • 먼저 다음 empty stringempty string연결하세요 .A
      • 둘째, B연결과 empty string연결empty string

echo참고: 매개변수에 공백을 여러 개 사용하면 다른 결과가 표시됩니다. 이는 echo가 인수를 단일 공백으로 연결하기 때문입니다.

$ echo "A   B"
A   B
$ echo ""A   B""
A B
$ echo """A   B"""
A   B
$ echo """"A   B""""
A B

관련 정보