의 출력은 무엇을 않는 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 $-
현재 쉘의 옵션을 인쇄합니다 ( -
접두사 없이 ). 1
및 2
추가 관련이없는 토큰입니다.
답변
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