10

文字列に1つ以上のアスタリスクが含まれているかどうかを確認したい。

私はこれを試しました:

if [[ $date_alarm =~ .*\*.* ]]
then
    ...
fi

スクリプトを直接起動した場合は機能しましたが、シャットダウン中にこのスクリプトが呼び出された場合は機能しませんでした(スクリプトはupdate-rc.dを介してランレベル0および6にインストールされました)

何かアイデア、提案はありますか?

ありがとう

4

7 に答える 7

7

常に文字列を引用します。

文字列$date_alarmにアスタリスクが含まれているかどうかを確認するには、次のようにします。

エコーx"$date_alarm" | grep'*'> / dev / null; それから
    ..。
fi
于 2009-07-28T12:09:03.127 に答える
2
expr "$date_alarm" : ".*\*.*"
于 2010-10-28T14:37:22.503 に答える
1

交換するとどうなりますか

if [[ $date_alarm =~ .*\*.* ]]

if [[ "$date_alarm" =~ .*\*.* ]]

また、試してみることもできます。

if [[ "$date_alarm" =~ '\*+' ]]

それについてはよくわかりません...

よろしく

于 2009-07-28T12:12:06.490 に答える
1
case "$date_alarm" in
*\**)
  ...
  break
  ;;
*)
  # else part
  ...
  ;;
esac

構文は/bin/ shですが、機能します。

于 2009-07-28T12:24:55.260 に答える
0
if echo $date_alarm|perl -e '$_=<>;exit(!/\*/)'
then
    ...
fi
于 2009-07-28T12:17:42.107 に答える
0

ついに

if echo x"$date_alarm" | grep '*' > /dev/null; then

トリックをしました

奇妙なこと=〜。*。シャットダウン中のinitコンテキストでのみ機能しませんが、bashコンテキストで起動した場合は完全に機能します。

于 2009-07-28T12:39:26.370 に答える
0

他の人のようにstdoutをリダイレクトする必要はありません。代わりに、grepの-qオプションを使用してください。

エコーx"$date_alarm" | grep -q'*'; それから

于 2017-11-10T20:50:11.950 に答える