Question

J'ai essayé d'exécuter une commande en le lisant à partir d'un fichier texte, mais il a échoué. quand je rentre dans la même ligne, il travaille, dur. im suprised qu'il avait même essayer d'exécuter la commande de mouvement, mais a un errormessage qui se traduit par « Fichier ou répertoire introuvable ». évidemment le errormessage ne dit pas la vérité ici. Quelqu'un peut-il expliquer cela?

s39339@compute:~/spr/man/de$ head -n7 mkdoc|tail -n1
mv nutzer.1.gz ~/public_html/man/man1/
s39339@compute:~/spr/man/de$ `head -n7 mkdoc|tail -n1`
mv: Verschieben von „nutzer.1.gz“ nach „~/public_html/man/man1/“ nicht möglich: Datei oder Verzeichnis nicht gefunden
s39339@compute:~/spr/man/de$ ls
gzip  mkdoc  nutzer.1  nutzer.1.gz  nutzer.pod  rbsh
s39339@compute:~/spr/man/de$ mv nutzer.1.gz ~/public_html/man/man1/
s39339@compute:~/spr/man/de$

Je fais cela pour l'école si une réponse serait bien. la façon dont nous obtenons nos résultats n'a pas d'importance, même si ce que j'ai essayé semble unnessecary façon.

Était-ce utile?

La solution

`head -n7 mkdoc|tail -n1` est remplacé par le résultat de la commande, qui est mv nutzer.1.gz ~/public_html/man/man1/. Cette sortie est alors interprétée comme une commande, une commande de mv.

Il échoue, cependant, parce que l'expansion de tilde a déjà été réalisée. ~ ne se substitue pas à votre répertoire personnel à ce stade; il est juste un caractère tilde plaine. Il est comme si vous aviez essayé d'exécuter

'mv' 'nutzer.1.gz' '~/public_html/man/man1/'

Pour la même raison, vous ne pouvez pas utiliser $HOME, ou un second jeu de guillemets obliques, ou toute autre construction dynamique. Pour ce faire, vous aurez besoin d'utiliser eval, ou passer la chaîne à une seconde coque.

eval `head -n7 mkdoc|tail -n1`
bash -c "`head -n7 mkdoc|tail -n1`"

Autres conseils

Le tilde "~" n'est pas interpolé à l'intérieur des apostrophes inverses.

[edited] Au lieu de cela, vous devriez être en mesure d'utiliser: eval "$ (tête -n7 mkdoc | queue -n1)"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top