Жалуется на отсутствие такого файла или каталога
Я новичок в программировании оболочки на 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