누군가 설명할 수 있습니까: strstr "\`cat /proc/cmdline\`" rd.live.image는 무엇을 합니까?

누군가 설명할 수 있습니까: strstr "\`cat /proc/cmdline\`" rd.live.image는 무엇을 합니까?

전체 컨텍스트 코드 줄:

if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ]; then
     exit 0
fi

스테스터로써 정의 된:

strstr() {
  [ "${1#*$2*}" = "$1" ] && return 1
  return 0
}

추가 정보: 코드:fedora-live-base.ks. Fedora에서 제공하는 기본 kickstarter 파일입니다. ks 파일의 기능을 대부분 이해하려고 노력 중입니다. 파일의 많은 스크립트 부분으로 인해 어려움을 겪고 있습니다.

답변1

strstr() {
  [ "${1#*$2*}" = "$1" ] && return 1
  return 0
}

command1 && command2

어쨌든 () 가 실행 command1되고,[ "${1#*$2*}" = "$1" ]~하지 않는 한 command1반품 0(&&)이 command2( return 1)를 실행합니다.

return na가 함수 내에서 실행 되면 해당 지점에서 함수 실행이 중지되고 반환됩니다.n

따라서 반환하면 반환하고 그렇지 않으면 strstr반환하십시오.1[ "${1#*$2*}" = "$1" ]00

["test" 내장 함수의 동의어입니다.

[ str1 = str2 ]0문자열이 동일한지 여부를 반환합니다.

$1에 전달된 첫 번째 매개변수이고 strstr, $2두 번째 매개변수이며 "${1#*$2*}",쉘 매개변수 확장$1:

${매개변수#단어}패턴이 매개변수 확장 값의 시작과 일치하는 경우 확장 결과는 가장 짧은 일치 패턴("#"의 경우) 또는 가장 긴 일치 패턴("##"의 경우)이 있는 매개변수 확장 값이 됩니다. 제거됨.

$1따라서 이것은 가장 짧은 일치인 으로 확장됩니다 *$2*(< 이것은패턴 매칭), 삭제되었습니다. 이 확장된 값은 전체 값 $1(이건 그냥~ 고 싶어요$1포함 되어 있는지 확인하는 방법$2).

좋아요, 이제 $1and 는 무엇인가요 $2?

$2매우 간단 rd.live.image하고

$1파일 내용이에요/proc/cmdline

/proc/cmdline: 이 파일은 시작 시 커널에 전달된 매개변수를 보여줍니다.

그런 다음 마지막으로:

strstr "`cat /proc/cmdline`" rd.live.image는 무엇을 합니까?

rd.live.image시작 시 커널에 전달된 인수에 포함되는지 확인합니다 . 이 경우에는 가 반환되고 0, 그렇지 않으면 가 반환됩니다 1.

관련 정보