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


14

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

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

echo $-1
imsBEl1
echo $-2
imsBEl2

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

echo $-1
himBH1
echo $-2
himBH2

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


1
제목은 사이드 바에서 다음과 같은 문제를 전시한다 : meta.stackexchange.com/q/229363/205964
IQAndreas

수정을 시도한 제안 된 편집을 추가했지만 곧 MathJax를 렌더링하는 사이드 바라는 것을 깨달았습니다. 즉, 제목이이 페이지에 있으면 불필요한 백 슬래시 만 나타납니다.
IQAndreas

답변:


19

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

-

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

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

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

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


18

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


11

Miroslav의 답변에 추가 :

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

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

imsBEl
himBH

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

-나는

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

-미디엄

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

-비

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

-에스

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

-이자형

오류

-엘

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

-h

하스 홀

-H 역사 확장

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


3

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

$ unset foo
$ echo "${foo-bar}"
bar
$ foo=test
$ echo "${foo-bar}"
test
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.