LoginSignup

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Bashでの文字列置換が上手く行きません

解決したいこと

Bashで文字列置換を行う際に、置換されずにそのまま出力されてしまいます。
sedを使う手もあるのですが、出来ればbash置換で済ませたいです。

発生している問題・エラー

エラーはありません

該当するソースコード

Bash
$ echo $PWD
/home/user/git
$ PWD_SHORT="${PWD/${HOME}/~}"
$ echo $PWD_SHORT
/home/user/git # ~/git を期待していた

自分で試したこと

$HOME/が含まれているのがいけないのかと思い、以下のように実行してみたが解決せず。

試行1

$ echo $PWD
/home/user/git
$ HOME_REPLACED="${HOME//\//\\/}"
$ echo ${PWD/${HOME_REPLACED}/~}
/home/user/git

試行2

$ echo $PWD
/home/user/git
$ echo ${PWD/\/home\/user}
/home/user/git
0

1Answer

チルダもエスケープしないと無理みたいですね

pwd=/home/user/git; echo ${pwd/\/home\/user/\~};
# ~/git

(編集)

1

Comments

  1. @alpaca-honke

    Questioner
    echo $HOME と確認したところ、
    /home/user でした。
  2. チルダをエスケープしたら動きそうですね
    (回答編集済み)
  3. @alpaca-honke

    Questioner
    ありがとうございます!
    チルダも何かのメタ文字?だったんですね。
    Zshでは正常に動作していたので、何故か分からず困ってました。

Your answer might help someone💌