誰かが説明できます:strstr "\`cat /proc/cmdline\`" rd.live.imageは何をしますか?

誰かが説明できます:strstr

完全なコンテキストコード行:

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(&&)がcommand2return 1)を実行します。

return naが関数内で実行されると、その時点で関数の実行が停止して返されます。n

したがって、返された場合は返し、それ以外の場合はstrstr返します。1[ "${1#*$2*}" = "$1" ]00

["test" 組み込み関数の同義語です。

[ str1 = str2 ]0文字列が等しいかどうかを返します。

$1に渡された最初のパラメータstrstr$22番目のパラメータ"${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

おすすめ記事