Жалуется на отсутствие такого файла или каталога

Я новичок в программировании оболочки на 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: Нет такого файла или каталога, и я не знаю, почему это произошло! Вы видите ошибку? Спасибо!

1 ответ

Решение

Проблема в том, что tilde expansion не произойдет, поскольку путь находится в значении переменной (tilde expansion происходит раньше variable expansion). Вы можете решить эту проблему, используя $HOME вместо ~, То есть

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

Это должно решить вашу проблему.

Дальнейшее чтение: EXPANSION раздел man bash

Другие вопросы по тегам