[unix] echo $ -1은 무엇을 표시합니까?

의 출력은 무엇을 않는 echo $-1, echo $-2, echo $-3… 의미?

내 Linux 상자 중 하나에 다음이 표시됩니다.

echo $-1
imsBEl1
echo $-2
imsBEl2

그리고 다른 리눅스 박스에는 다음이 표시됩니다.

echo $-1
himBH1
echo $-2
himBH2

메모리 위치 나 다른 것에 매핑되어 있습니까?



답변

POSIX는 $- 를 다음과 같이 정의 했습니다.

(하이픈) 호출시, 특수 내장 명령 set 또는 쉘에 의해 내재적으로 지정된 현재 옵션 플래그 (문자로 연결된 단일 문자 옵션 이름)로 확장됩니다.

따라서 $-쉘에서 다른 기반 또는 호출 방법이 될 수 있습니다.

1또는 2여기에서 분리 된 토큰입니다. 쉘이 unquote를 볼 때, $매개 변수 확장, 명령 대체 또는 산술 확장 후보의 시작을 식별합니다. 그것은 그것을보고 $-확장했고 나머지는 변경하지 않았습니다.

자세한 내용 은 토큰 인식 섹션을 참조하십시오.


답변

echo $-현재 쉘의 옵션을 인쇄합니다 ( -접두사 없이 ). 12추가 관련이없는 토큰입니다.


답변

Miroslav의 답변에 추가 :

echo $-현재 쉘의 옵션을 인쇄합니다 ( -접두사 없이 ). 1과 2는 관련없는 추가 토큰입니다.

이는 각 머신에 대한 옵션입니다.

imsBEl
himBH

나는 각 깃발의 의미를 연구하고 작은 의미로 아래의 의미를 편집했습니다.

-나는

-i 옵션이 있으면 쉘은 대화식입니다.

-미디엄

모니터 모드. 작업 제어가 활성화되었습니다.

-비

쉘은 중괄호 확장을 수행합니다 (중괄호 확장 참조 ). 이것은 기본적으로 켜져 있습니다.

-에스

-s 옵션이 있거나 옵션 처리 후 인수가 남아 있지 않으면 표준 입력에서 명령을 읽습니다. 이 옵션을 사용하면 대화식 쉘을 호출 할 때 위치 매개 변수를 설정할 수 있습니다.

-이자형

오류

-엘

bash가 마치 로그인 쉘로 호출 된 것처럼 작동하게하십시오

-h

하스 홀

-H 역사 확장

이 기능은 대화식 쉘에 기본적으로 사용됩니다.


답변

기존의 답변을 확장하기 위해 노력 echo "${-1}"하고 echo "${-2}"– 당신이 얻을 것이다 “잘못된 대체”오류 때문에 오히려 사용하는 것보다 -1하이픈하는 데 사용되는 변수 이름으로 값을 대체 변수 이름 경우 그 전에이 정의되어 있지 않습니다. 예를 들면 다음과 같습니다.

$ unset foo
$ echo "${foo-bar}"
bar
$ foo=test
$ echo "${foo-bar}"
test


답변