我是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 bash
的EXPANSION
部分