コマンドライン変数出力文字列のエスケープポイントとアスタリスク

コマンドライン変数出力文字列のエスケープポイントとアスタリスク

次のように環境変数を設定するコマンドがあります。

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

おすすめ記事