Ln抱怨没有这样的文件或目录



我是macosx上shell编程的新手,遇到了一点问题。我编写了以下shell脚本:

#!/bin/sh
function createlink {
source_file=$1
target_file="~/$source_file"
if [[ -f $target_file ]]; then
    rm $target_file
fi
ln $source_file $target_file
}
createlink ".netrc"

当我执行这个脚本时,我得到消息ln: ~/.netrc:没有这样的文件或目录,我不知道为什么会发生这种情况!看到错误了吗?谢谢!

问题是,tilde expansion不会发生,因为路径是在一个变量值(tilde expansion发生在variable expansion之前)。您可以通过使用$HOME而不是~来改善这个问题。这是

target_file="${HOME}/${source_file}"

这会解决你的问题。

进一步阅读:man bashEXPANSION部分

相关内容

  • 没有找到相关文章

最新更新