var=-가 작동하지 않는 이유는 무엇입니까?

var=-가 작동하지 않는 이유는 무엇입니까?

질문을 작성할 때:

파일 touch이름을 지정하는 방법cat-

-이름이 지정된 파일이 변수에 저장되는 경우를 일반화하려고 합니다 .

에서는 zsh단일 하이픈을 포함하도록 변수를 설정하려고 합니다.

% var=-
% echo $var

% var='-'
% echo $var

% var=\-
% echo $var

%

왜 작동하지 않습니까?

이 점에서 왜 zsh다른가요 ?bash

어떻게 $var설정 하나요 -?

답변1

또한 중요한 것은 변수의 실제 값이 아니라 변수의 상태인 경우가 많습니다. 이 echo경우. Zsh는 echo단일 대시를 옵션 끝 표시로 처리하므로 제거합니다.온라인 매뉴얼:

표준을 준수하기 위해 이중 대시는 옵션 처리를 종료하지 않고 직접 인쇄됩니다. 그러나 단일 대시는 옵션 처리를 종료하므로 첫 번째 대시(옵션 뒤에 올 수 있음)는 인쇄되지 않지만 그 뒤의 모든 대시는 인수로 인쇄됩니다.단일 대시는 다른 쉘과 다르게 작동합니다.텍스트를 인쇄하는 보다 이식 가능한 방법은 다음을 참조하세요.인쇄 기능, zsh에서 텍스트를 인쇄하는 보다 제어된 방법은 다음을 참조하세요.인쇄.

그래서 우리는:

zsh% echo -

zsh% echo - -n
-n
zsh% var=-
zsh% printf "%s\n" "$var"
-

또한보십시오:

관련 정보