script shell pour copier des fichiers d'un répertoire à un autre
Essayer d'écrire un script simple pour copier certains fichiers dans OS X 10.9.
Voici le contenu..
SRC_DIR="~/Library/Preferences-Old"
DST_DIR="~/Library/Preferences"
FILEN="test.txt"
cp $SRC_DIR/$FILEN $DST_DIR
Me donne de la sortie:
cp: ~/Library/Preferences-Old/test.txt: No such file or directory
Bien sûr, le ci-dessus est faux. Exactement le même cp de commande dans le terminal directement fait le tour. Ce que je fais mal ici?
- en fait la suppression de toutes les citations résolu le problème! Ne sais pas exactement ce qui se passe ici..
- Il est tout au sujet de la compréhension de citant. Lire par exemple bash citant
- shellcheck utilement points pour le problème en disant: "Notez que ~ ne se développe pas dans les guillemets."
Vous devez vous connecter pour publier un commentaire.
~
est l'une des rares exceptions à la règle "en cas de doute, la citation". Comme d'autres l'ont souligné, une cité~
n'est pas soumis à l'expansion. Toutefois, on peut encore citer le reste de la chaîne:Note que, selon les valeurs attribuées aux deux
*_DIR
variables, il ne suffit pas de citer les valeurs assignées; vous avez encore besoin de citer leurs expansions.Votre guillemets sont la prévention de la coquille à partir de la conversion de votre
~
dans un chemin d'accès réel. Observer:~
n'est pas un endroit, c'est un raccourci pour le chemin de votre répertoire d'accueil.Comme déjà mentionné guillemets désactivé
~
expansion.Meilleure approche est d'utiliser
HOME
variable: