입력 변수에 공백이 있나요? [복사]

입력 변수에 공백이 있나요? [복사]

다음을 포함하는 스크립트가 있다고 가정해 보겠습니다.

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

관련 정보