11

私が使用するbash文字列の部分文字列を置き換えるstrには:

str=${str/$pattern/$new}

ただし、現在、で実行されるスクリプトを作成していますash

を含む文字列が'/'あり、上記の構文を使用'/'して文字列内の を置き換えたいのですが、うまくいきません。

私は試した:

str=${str///a}
str=${str/\//a}
str=${str/'/'/a}

しかし、それらは機能しません

どうすれば修正できますか?

4

1 に答える 1

16

このパラメーター展開は、POSIX sh に対する bash 拡張です。IEEE 標準 1003.1 の関連セクションを確認すると、これは必須の機能ではないことがわかります。そのため、POSIX 準拠のみを約束するシェル ( など)ashには、それを実装する義務はなく、実装が修正する義務もありません。とにかくそうする必要がある特定の正確さの基準に..

bash 拡張機能が必要な場合は、bash (または同様に拡張された他の ksh 派生物) を使用する必要があります。

その間、他のツールを使用できます。例えば:

str=$(printf '%s' "$str" | tr '/' 'a')

また

str=$(printf '%s' "$str" | sed -e 's@/@a@g')
于 2014-02-20T15:58:30.547 に答える