2

サブ文字列を絶対パスに置き換えるスクリプトを作成しようとしているので、使用しています

sed s/TEMPDIR/$PWD/ file.py > newfile.py

明らかに、TEMPを絶対パスに置き換えたいのですが、取得し続けます

sed: -e 式 #1、文字 12: `s' への不明なオプション

パスに「/」が含まれていることが原因ではないかと思いますが、解決方法がわかりません。何か案は?

また、deos PWD は、私がリンクを扱っていないことを考えると、絶対パスを保証しますか?

ありがとう!!

4

1 に答える 1

8

別の区切り文字を使用します。

sed "s@TEMPDIR@$PWD@" file.py > newfile.py

PWDを使用しても、絶対パスが保証されるとは限りません。(シェルによって異なります)。ただしpwd、絶対パスが返されるため、次を使用します。

sed "s@TEMPDIR@$(pwd)@" file.py > newfile.py

パスに。が含まれている場合、これらはどちらも機能しないことに注意してください@。どちらにも表示されない区切り文字を選択してください。シェル標準から次の点に注意してください。

PWDがpwd-Pによって出力されるパス名に設定されている場合、現在の作業ディレクトリまたはそのディレクトリの親に対して、そのパス名を決定するための十分な権限がない場合、PWDの値は次のようになります。不特定。この変数への割り当ては無視できます。アプリケーションがPWDの値を設定または設定解除する場合、cdおよびpwdユーティリティの動作は指定されていません。

したがって、おそらく$PWDに頼ることができます。pwdシンボリックリンクも解決されないことに注意してください。その$PWDため、次を使用することをお勧めします。readlink -f .

于 2012-11-14T18:22:20.733 に答える