답변:
$-
'현재 플래그'를 의미합니다.echo $-
"himBH"를 반환합니다. 그것들은 모두 기본값입니다.[[ $- != *i* ]] && return
실제로 주석에서 위의 내용을 수행합니다. 대화 형 플래그가 설정되어 있는지 확인합니다. [[와]]는 부울로 만들어 "true"또는 "false"로 끝납니다. "false && return"은 "true && return"으로 돌아가서 리턴을 실행합니다.기본 플래그는 더 자세히 설명됩니다.
h는 "모두 해시"를 의미합니다 : 이것은 bash에게 PATH 쿼리를 통해 찾은 명령의 위치를 기억하도록 지시합니다.
나는 "대화 형"입니다 : 입력을 입력하고 출력을 되 찾습니다.
m은 "모니터"용입니다 : 이것은 작업 제어를 가능하게합니다
B는 "괄호 확장"입니다. 이를 통해 괄호 확장을 사용할 수 있습니다
H는 "역사 확장"입니다. 이를 통해 느낌표로 숫자를 미리 지정하여 기록에서 명령을 다시 실행할 수 있습니다.
그건 그렇고 나는 가지고있다 ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
기본적으로 동일하지만 읽기 쉬운 것으로 가정합니다.
기본적으로 "쉘 플래그에 소문자 i가 없으면 여기에서 함수 / 스크립트를 중지하십시오"를 의미합니다.
[[ ]]
bash의 조건식을 나타냅니다.
$-
쉘 플래그를 의미합니다. 쉘이 대화 형인 경우 "i"를 포함합니다 (예 : 스크립트를 실행하는 대신 명령을 입력 할 수 있음).
!=
단순히 "같지 않음"을 의미합니다.
*i*
"i"를 포함하는 모든 항목과 일치하는 와일드 카드 패턴입니다.
return
인수가 없으면 현재 함수 또는 스크립트의 실행을 중지한다는 의미입니다.
&&
논리 AND 연산자입니다. 이 경우 오른쪽 return
의 표현식은 왼쪽의 표현식이 true 인 경우에만 평가 (실행)됩니다 . 따라서 많은 프로그래밍 언어에서 a && b
단축형 if a then b
입니다.이를 "단락 평가"라고하며이를 사용할 때 프로그래밍 교사를 미치게합니다.
bash가 대화 형 셸에서 열리지 않으면 아무 것도하지 마십시오.
전체 기능을 모르지만 TTY에서 bash가 열려있는 경우 해당 줄 아래에 명령 및 플래그가 설정되어 있습니다.
$-
그리고*i*
그것이 대화식 모드인지 아닌지를 어떻게 알기를 고대하고 있습니다.