변수에서 '?' 문자를 이스케이프할 수 없습니다(유닉스)

변수에서 '?' 문자를 이스케이프할 수 없습니다(유닉스)

나는 이 질문을 찾기 위해 모든 곳을 찾아보았지만 그것을 찾지 못했고 현재 문제에 대한 답도 없는 것 같으며 솔직히 그것은 말이 되지도 않습니다.

그렇다면 제가 하고 싶은 것은 물음표에서 벗어나는 것인가요? 내 변수 선언에서. 명확하게 쓰여진

var=?

하지 않을 것입니다. 물론 백슬래시와 물음표를 사용하여 문제를 해결할 수 있습니다. 일반적으로 다음과 같습니다.

var=\?

그러나 이것은 작동하지 않습니다(그러나 실제로는 작동해야 합니다). 변수를 에코하면 실제로 다음이 출력됩니다.

5 A X

(이것은 내 홈 디렉터리에 있는 세 개의 폴더입니다.) 그런 다음 내 홈 디렉터리나 루트(폴더 A, B 및 C가 있음)와 같은 디렉터리에 있을 때 이런 일이 발생한다는 것을 알았습니다. 그래서 cwd를 새로 생성된 빈 디렉토리로 변경했는데 갑자기 작동했습니다. 이에 대한 구체적인 이유는 무엇입니까? 한 글자로 된 폴더 이름에서만 발생하는 것 같지만 \?로 물음표를 이스케이프 처리했기 때문에 그런 일이 발생해서는 안 된다고 생각합니다.

답변1

echo명령에서 이 변수를 인용 해야 합니다 .

$ var=?
$ echo "$var"
?

답변2

진실을 말하세요. 이것옳은탈출 방법은 상황에 따라 달라집니다.최대사용되는 쉘에 따라 다릅니다. 가장 일반적인 이스케이프 문자(이미 언급한 대로)는 백슬래시입니다 \. 그러나 사용법과 사용하는 셸에 따라 다릅니다. 방법은 다양할 수 있습니다.

그래서. 요약하자면. 이것옳은답변은 사용 중인 쉘이 제공되는 경우에만 제공될 수 있습니다. :)

관련 정보