質問

I'm new in shell programming on macosx and have a little problem. I've written the following shell script:

#!/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"

When I'm executing this script I get the message ln: ~/.netrc: No such file or directory and I don't know why this happened! Do you see the error? Thanks!

役に立ちましたか?

解決

The issue is that tilde expansion will not happen as the path is in a variable value (tilde expansion happens before variable expansion). You can ameliorate this issue by using $HOME instead of ~. That is

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

This should solve your problem.

Further reading: EXPANSION section of man bash

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top