
Ich habe das gefragtFragedrüben auf SO und bin nicht sehr weit gekommen; hier ist die aktuelle Version meines Skripts und was ich tun möchte. Ich suche nach Vorschlägen zum Debuggen und Testen. Ich werde es wahrscheinlich entfernen, -fn
während ich weiter daran arbeite, da es einfach im Weg ist – ich musste Dateien in ein temporäres Verzeichnis und dann wieder zurück verschieben, damit irgendetwas funktioniert.
#!/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;
Antwort1
Um den Kommentar zu erweitern: Die abschließenden Backslashs führen dazu, dass die drei ln
Befehle als eine Zeile behandelt werden. Das möchten Sie nicht. Sie möchten drei verschiedene Zeilen. Wenn ich also die drei Zeilen wiedergebe, werden sie wie folgt analysiert.
$ 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
Sie können sehen, dass die Ausgabe aller echo
Befehle in einer Zeile aufgelistet ist. Das Entfernen der Backslashs verursacht dieses Verhalten nicht. Jeder Befehl wird separat behandelt.