
次のように環境変数を設定するコマンドがあります。
BLACKLIST=$(python tools.py gen-blacklist)
*
これにより、次のようにドットとアスタリスクを含む文字列が生成されます*
。
LISTEN,UNLISTEN,NOTIFY,SHOW,REFRESH,pg_notify,.*remove,.*delete,.*update,.*create,.*insert
文字列内のすべてのドットとアスタリスクをエスケープできるようにしたいです。これが私が試したことです。
TEMP=$(python tools.py gen-blacklist) && BLACKLIST=$(echo ${TEMP/.\*/\\.\\*}) && echo $BLACKLIST
ただし、これは最初の発生のみを置き換えます。
LISTEN,UNLISTEN,NOTIFY,SHOW,REFRESH,pg_notify,\.\*remove,.*delete,.*update,.*create,.*insert
*
合計のすべての項目をどのように避けますか.
?
答え1
xy 問題のにおいがするが、とにかく...
~からパラメータ拡張, これは${parameter/pattern/string}
-style 拡張についてドキュメントに記載されている内容です。
パターンが「/」で始まる場合、そのパターンはすべて文字列に置き換えられます。通常、最初の発生のみが置き換えられます。
したがって、${TEMP/.\*/\\.\\*}
次に変更する必要があります(すぐに続く追加情報を参照${TEMP//.\*/\\.\\*}
)。/
TEMP
これは
LISTEN,UNLISTEN,NOTIFY,SHOW,REFRESH,pg_notify,\.\*remove,\.\*delete,\.\*update,\.\*create,\.\*insert
答え2
見積もり もっと(™) ....
努力する:
TEMP=$(python tools.py gen-blacklist) &&
echo "$TEMP"
本当にドットやアスタリスクを避ける必要がある場合は、(bashで)次のように使用してください。
TEMP=$(python tools.py gen-blacklist) &&
BLACKLIST=${TEMP//\.\*/\\.\\*} &&
echo "$BLACKLIST"