6

私は macosx でのシェル プログラミングが初めてで、少し問題があります。次のシェルスクリプトを作成しました。

#!/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: No such file or directory and I don't know why this could!」というメッセージが表示されます。エラーが表示されますか? ありがとう!

4

1 に答える 1

7

問題はtilde expansion、パスが変数値にあるため発生しないことです (tilde expansion前に発生しますvariable expansion)。$HOMEの代わりに を使用すると、この問題を改善できます~。あれは

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

これで問題が解決するはずです。

参考文献:EXPANSIONのセクションman bash

于 2013-05-18T09:57:43.163 に答える