
Eu perguntei issoperguntano SO e não fui muito longe; aqui está a versão atual do meu script e o que eu gostaria que fizesse. Sugestões para depuração e teste são o que estou procurando. Provavelmente irei remover -fn
enquanto estiver trabalhando nisso, pois isso apenas atrapalha - tive que mover os arquivos para um diretório temporário e depois voltar para que qualquer coisa funcionasse.
#!/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;
Responder1
Para expandir o comentário: as barras invertidas fazem com que os três ln
comandos sejam tratados como uma linha. Você não quer isso. Você quer três linhas diferentes. Então, quando eu ecoo as três linhas aqui é como elas são analisadas.
$ 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
Você pode ver como a saída de echo
todos os comandos está listada em uma linha. Remover as barras invertidas não causará esse comportamento. Cada comando será tratado separadamente.