
Я спросил этовопросна SO и не продвинулся далеко; вот текущая версия моего скрипта и то, что я хотел бы сделать. Предложения по отладке и тестированию — это то, что я ищу. Я, вероятно, удалю, -fn
пока буду работать над этим, так как это только мешает — пришлось переместить файлы во временный каталог, а затем обратно, чтобы что-то заработало.
#!/bin/bash
set -e
function makeLinks() {
ln -sfn ~/Documents/Dotfiles/.bash_profile ~/.bash_profile\
ln -sfn ~/Documents/Dotfiles/.gitconfig ~/.gitconfig\
ln -sfn ~/Documents/Dotfiles/.gitignore_global ~/.gitignore_global
source ~/.bash_profile;
}
read -rp "This may overwrite existing files. Are you sure? (y/n) " -n 1;
echo "";
if [[ $REPLY =~ ^[Yy]$ ]]; then
makeLinks
fi;
решение1
Расширяя комментарий: завершающие обратные косые черты приводят к тому, что три ln
команды рассматриваются как одна строка. Вам это не нужно. Вам нужны три разные строки. Итак, когда я вывожу три строки, вот как они анализируются.
$ echo ln -sfn ~/Documents/Dotfiles/.bash_profile ~/.bash_profile\
> ln -sfn ~/Documents/Dotfiles/.gitconfig ~/.gitconfig\
> ln -sfn ~/Documents/Dotfiles/.gitignore_global ~/.gitignore_global
ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.bash_profile /cygdrive/d/home/prateek/.bash_profile ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.gitconfig /cygdrive/d/home/prateek/.gitconfig ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.gitignore_global /cygdrive/d/home/prateek/.gitignore_global
Вы можете видеть, что вывод всех echo
команд перечислен в одной строке. Удаление обратных косых черт не приведет к такому поведению. Каждая команда будет обрабатываться отдельно.