echo $-1은 무엇을 보여줍니까?

echo $-1은 무엇을 보여줍니까?

echo $-1, echo $-2, .. 의 출력은 무엇을 echo $-3의미합니까?

내 Linux 컴퓨터 중 하나에 다음이 표시됩니다.

echo $-1
imsBEl1
echo $-2
imsBEl2

다른 Linux 상자에는 다음이 표시됩니다.

echo $-1
himBH1
echo $-2
himBH2

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

답변1

POSIX 정의$-처럼:

-

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

따라서 $-쉘이나 호출 방법에 따라 다를 수 있습니다.

1또는 2여기에서 태그를 분리하세요. 쉘이 unquote 를 발견하면 $매개변수 확장, 명령 대체 또는 산술 확장에 대한 후보의 시작을 인식합니다. 그것은 그것을 보고 $-확장하고 나머지는 변경하지 않고 그대로 둡니다.

너는 볼 수있어토큰 인식섹션을 참조하세요.

답변2

echo $-현재 쉘에 대한 옵션을 인쇄합니다( -접두사 없이). 관련 없는 추가 태그 1입니다 2.

답변3

Miroslav의 답변에 추가:

echo $-현재 쉘에 대한 옵션을 인쇄합니다( -접두사 없이). 1과 2는 추가적인 관련 없는 마커입니다.

즉, 이러한 옵션은 각 시스템에 개별적으로 적용됩니다.

imsBEl
himBH

각 기호의 의미를 조사해 봤습니다다음의 의미는 몇 가지 설명으로 정리되어 있습니다.

-나

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

-중

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

-비

쉘은 중괄호 확장을 수행합니다(지원 연장 보기). 이 기능은 기본적으로 활성화되어 있습니다.

-에스

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

-이자형

오류 추적

-엘

Bash가 로그인 셸로 호출된 것처럼 동작하도록 만들기

-시간

하셸

-H 역사 확장

기본적으로 대화형 셸에는 이 기능이 활성화되어 있습니다.

답변4

기존 답변을 확장하려면 시도해 echo "${-1}"보십시오 echo "${-2}"."잘못된 대체" 오류하이픈은 -1변수 이름에는 사용되지 않지만 변수 이름에는 사용되지 않습니다.값을 대체하다변수 이름이 있는 경우그 전에정의되지 않았습니다. 예를 들어:

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

관련 정보