質問

私は、現在のパスにスペースが含まれている場合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| ;  
 '
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top