String 在bash脚本中将Tilde替换为$HOME

String 在bash脚本中将Tilde替换为$HOME,string,bash,shell,replace,String,Bash,Shell,Replace,我一直在互联网上搜寻,我看到了用~替换~的例子,但我正在尝试另一种方法(例如用$HOME替换~,目前如果我试着运行这个: if [[ $directory_name = *~* ]]; then echo "${$directory_name/\~/$HOME}" fi 要替换它,我得到以下错误: ${$directory\u name/\~/$HOME}:替换错误 我在脚本文件的顶部有#!/bin/bash,当我运行它时,我一直在使用类似以下内容: sh测试脚本.sh 我也在Mac上的终

我一直在互联网上搜寻,我看到了用
~
替换
~
的例子,但我正在尝试另一种方法(例如用
$HOME
替换
~
,目前如果我试着运行这个:

if [[ $directory_name = *~* ]]; then
  echo "${$directory_name/\~/$HOME}"
fi
要替换它,我得到以下错误:

${$directory\u name/\~/$HOME}:替换错误

我在脚本文件的顶部有
#!/bin/bash
,当我运行它时,我一直在使用类似以下内容:

sh测试脚本.sh

我也在Mac上的终端上做这件事,所以我不确定这是否和它有关


再一次…新的bash脚本,所以虽然这似乎是合乎逻辑的,但我可能会把这一切都搞错并遗漏一些东西。谢谢!

echo“${directory\u name/\~/$HOME}”
您可能也不希望
*~*
~
仅当它构成完整的第一个目录组件时才应替换为
$HOME
~user/
是user
user
的主目录。否则,
~
只是一个字符……还有其他特殊情况--
~
具有非-co属性例如,de>$HOME的含义;
~+
也是如此。