我是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:没有这样的文件或目录,我不知道为什么会这样!你看到错误吗?谢谢!
答案 0 :(得分:6)
问题在于tilde expansion
不会发生,因为路径位于变量值中(tilde expansion
发生在variable expansion
之前)。您可以使用$HOME
代替~
来改善此问题。那是
target_file="${HOME}/${source_file}"
这可以解决您的问题。
进一步阅读:EXPANSION
man bash
部分