0

次の行を含むスクリプトがあります。

if [ -z "`/sbin/service mysqld status | grep 'mysqld (.*) is running'`" ] ; then

サービス名とgrep正規表現を変数に置き換えたい。OS/MySQL のバージョンが異なれば、サービス名も異なり、レポートされるステータスも異なります。コードの行を編集するのにうんざりしています。だから私はこれをしました:

SERVICE_NAME=mysql
SERVICE_RUNNING_STR="MySQL (.*) running"
...
if [ -z "`/sbin/service $SERVICE_NAME status | grep '$SERVICE_RUNNING_STR'`" ] ; then
...

それが機能しないことを除いて。grep ステートメントで SERVICE_RUNNING_STR を出力します。引用符やその他のものの多くの組み合わせを試しましたが、うまくいきませんでした。引用符と目盛りと一重引用符に何が埋め込まれているのかわかりません。

4

2 に答える 2

1

一重引用符は使用しないでください。変数は展開されません。二重引用符をバックスラッシュします。

[ -z "`/sbin/service $SERVICE_NAME status | grep \"$SERVICE_RUNNING_STR\"`" ] 
于 2013-07-11T22:34:40.710 に答える