我问这个问题就这么过去了,并没有走多远;这是我的脚本的当前版本以及我想要做的事情。我正在寻找调试和测试的建议。我可能会-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
都列在一行上。删除反斜杠不会导致这种行为。每个命令将被单独处理。