이 기사를 고려하십시오.시험:
#!/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 string과 empty 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