"[[$-! = * i *]] && return"은 무슨 뜻입니까?


22

나는이 줄을 가지고 있으며 이것이 .bashrc정확히 무엇을 의미하는지 알고 싶습니다.

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

답변:


33
  • $- '현재 플래그'를 의미합니다.
  • 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

기본적으로 동일하지만 읽기 쉬운 것으로 가정합니다.


6

기본적으로 "쉘 플래그에 소문자 i가 없으면 여기에서 함수 / 스크립트를 중지하십시오"를 의미합니다.

[[ ]]

bash의 조건식을 나타냅니다.

$-

쉘 플래그를 의미합니다. 쉘이 대화 형인 경우 "i"를 포함합니다 (예 : 스크립트를 실행하는 대신 명령을 입력 할 수 있음).

!=

단순히 "같지 않음"을 의미합니다.

*i*

"i"를 포함하는 모든 항목과 일치하는 와일드 카드 패턴입니다.

return

인수가 없으면 현재 함수 또는 스크립트의 실행을 중지한다는 의미입니다.

&&

논리 AND 연산자입니다. 이 경우 오른쪽 return의 표현식은 왼쪽의 표현식이 true 인 경우에만 평가 (실행)됩니다 . 따라서 많은 프로그래밍 언어에서 a && b단축형 if a then b입니다.이를 "단락 평가"라고하며이를 사용할 때 프로그래밍 교사를 미치게합니다.


2

bash가 대화 형 셸에서 열리지 않으면 아무 것도하지 마십시오.

전체 기능을 모르지만 TTY에서 bash가 열려있는 경우 해당 줄 아래에 명령 및 플래그가 설정되어 있습니다.


고마워요 :) 그러나 나는 그것이 무엇인지 $-그리고 *i*그것이 대화식 모드인지 아닌지를 어떻게 알기를 고대하고 있습니다.
Severus Tux

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