string - 正規表現 - シェルスクリプト




bashスクリプトで文字列を検索するログファイル (2)

あなたは引用符で囲むべき文字列を探しています。
"$string"代わりに"$string"試してみてください

https://code.i-harness.com

私はちょうどPHPを学び始めました。 私は誰にでも推薦するphpacademyのチュートリアルに従っています。 とにかく、私はスクリプトをテストするためにXAMPPを使っています。 私はXAMPPを起動するbashスクリプトを書こうとしていて、特定の文字列、 "XAMPP for Linux started"を見つけたらlocalhostページにfirefoxをオープンして、xampp.logファイルにリダイレクトされています。 ファイルの検索に問題があります。 私は次のことを続けている:

grep: for: No such file or directory

私はファイルが存在することを知っている、私は私の構文が間違っていると思う。 これは私がこれまでに持っているものです:

loaded=$false
string="XAMPP for Linux started."

echo "Starting Xampp..."

sudo /opt/lampp/lampp start 2>&1 > ~/Documents/xampp.log

sleep 15

if grep -q $string ~/Documents/xampp.log; then

    $loaded=$true
    echo -e "\nXampp successfully started!"

fi

if [$loaded -eq $true]; then

    echo -e "Opening localhost..."
    firefox "http://localhost/"

else

    echo -e "\nXampp failed to start."
    echo -e "\nHere's what went wrong:\n"
    cat ~/Documents/xampp.log

fi

いくつかの問題があります:

  • quote変数を単純な引数"$string"として渡す場合は、
  • $true$falseはありません
  • bashは変数展開を行い、コマンドを実行する前に変数名をその値に置き換えます。 $loaded=$trueloaded=true.必要がありますloaded=true.
  • if: if [$loaded -eq $true]スペースと通常は引用符が必要です。 if [ "$loaded" -eq true ]場合はスペースが必要です。 この場合、変数は問題を起こさないように設定されますが、一般的にはそれに依存しません。




grep