![입력 변수에 공백이 있나요? [복사]](https://linux55.com/image/121727/%EC%9E%85%EB%A0%A5%20%EB%B3%80%EC%88%98%EC%97%90%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%EC%9E%88%EB%82%98%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
다음을 포함하는 스크립트가 있다고 가정해 보겠습니다.
command $1
또한 선택적 매개변수가 있다고 나와 있으므로 command
그럴 수도 있습니다 command $1 $2
.
여기에 공백이 있으면 $1
어떻게 되나요?(가정하자 $1=A B
)? 명령이 that으로 해석됩니까 command A B
, 아니면 command A\ B
단일 변수가 어디에 있습니까?A B
답변1
일반적으로 $1
공백이 포함되어 있고 큰따옴표로 묶이지 않은 경우 다중 입력 토큰으로 해석됩니다. 단일 토큰으로 해석하려면 큰따옴표로 묶으십시오 command "$1" $2
. 즉, 기본적으로 토큰을 구분하는 데 공백이 사용되기 때문입니다. 이 동작은 환경 변수 값을 설정하여 수정할 수 있습니다 IFS
. 자세한 내용은 고급 Bash 스크립팅 가이드의 다음 페이지를 확인하세요.
답변2
사용자가 입력하는 방법과 스크립트에서 참조하는 방법에 따라 다릅니다.
./command "a b"
또는
./command a\ b
제공되어야 합니다 $1="a b"
. 다른 곳에서 호출하는 경우 인수 변수를 적절한 따옴표로 묶어야 합니다. 즉,"$1"
사용자가 단순히 입력하는 경우
./commandab
그러면 $1에는 "a"가 포함되고 $2에는 "b"가 포함되며 $#(매개변수 수)는 2가 됩니다.
이 스크립트를 command
명령으로 사용해 보십시오.
#!/bin/bash
echo Number of arguments given - $#
echo First argument - $1
echo second argument - $2