質問
私は、現在のパスにスペースが含まれている場合PWD
変数に発生する最も厄介な問題が発生しています。私のコードは次のように多少見えます:
mycommand |sed -E '
s|mystuff|replacement| ;
s|'$(pwd)'|replacement| ;
'
現在のパスに空白文字が含まれていない限り、これは、素晴らしい作品。それがない場合は、$(pwd)
は
に展開されます
'mypath/with space'だけではなく
の
mypath/with space
この原因sedの式(ので、余分な引用符で)めちゃめちゃにする:
sed: 1: "s|mypath/with": unterminated substitute pattern
私はそれがこのようなPWD拡大する助けにはならないことに気づいた:。${PWD//\'/}
を
これは解決することができる方法上の任意のアイデア?
解決
二重引用符で単一引用符を交換し、PWDの周りのバッククォートで引用符を置き換えます:
mycommand | sed -E "
s|mystuff|replacement| ;
s|`pwd`|replacement| ;
"
二重引用符は、変数の拡張やバッククォートのコマンドを許可します。
他のヒント
あなたは置き換えるとどうなるか。
'$(pwd)'
と
'"$(pwd)"'
次のようになります:
mycommand | sed -E '
s|mystuff|replacement| ;
s|'"$(pwd)"'|replacement| ;
'
所属していません StackOverflow