0

次のコード行を理解する必要があります。

BIN_DIR=`grep BIN_DIR= $SMLCM | head -1`

ここ$SMLCHにパスが含まれています

これは私がこれまでに理解したことです:

  • grepいくつかの文字列、可能なパスを生成します。grepは何をしBIN_DIR=ますか?

  • パスはheadに渡され、パス内のすべてのファイルが最初の行を抽出するために使用されます

  • 何かが評価され(正確には何ですか?)、に保存されますBIN_DIR

よろしくお願いします、

サイモン

4

3 に答える 3

1
  • grepは、var$SMLCMで指定されたファイルの内容内にBIN_DIR=を含むすべての行に一致します
  • 頭が最初の行になります
  • この行(バックティック内のコマンドの結果)は、BIN_DIRに再割り当てされます
于 2009-09-22T16:02:39.160 に答える
1

これにより、$SMLCM変数で指定されたファイル内のリテラル文字列"BIN_DIR ="のすべての出現箇所が検出され、その出力の最初の行のみが取得され、BIN_DIRに割り当てられます。

BIN_DIRに関連付けられるものは「BIN_DIR=blah」のような文字列であるため、これは希望どおりに機能しない可能性があることに注意してください。つまり、次と同じ効果がある可能性があります。

BIN_DIR = "BIN_DIR = blah"

于 2009-09-22T16:03:08.737 に答える
0

これにより、が指すファイルに最初に表示されたときの値のみが抽出され、現在のスクリプトの変数に割り当てられます。$BIN_DIR$SMLCM$BIN_DIR

BIN_DIR=$(sed -n 's/^BIN_DIR=\(.*\)$/\1/p' $SMLCM | head -n 1)
  • sed -n:ストリームエディタを実行し、表示されたとおりに各行を印刷しないでください
  • s/: 代わりの
  • ^BIN_DIR=:テキスト "BIN_DIR ="で始まる行( "^")
  • \(.*\)$:そして、任意の文字( "。")の0個以上( "*")のグループ( "\(\)")で終了( "$")します。
  • /:その一致を次のように置き換えます
  • \1:最初の(この場合のみ)グループの内容
  • /p:置換を終了し、結果を印刷します
于 2009-09-22T17:07:29.433 に答える