1 votes

Les caractères génériques ne sont pas remplacés

#!/bin/bash
loc=`echo ~/.gvfs/*/DCIM/100_FUJI`
rm -f /mnt/fujifilmA100
ln -s "$loc" /mnt/fujifilmA100

Pour une raison quelconque, la variable * n'est pas remplacée par la seule valeur possible et reçoit la valeur /home/chris/.gvfs/*/DCIM/100_FUJI. Quelqu'un a-t-il une idée de la raison ?

A noter :

  • Si l'expansion mondiale échoue, le modèle n'est pas remplacé. J'ai exécuté la commande J'ai exécuté les commandes

    chris@comp2008:~$ loc=``echo ~/.gvfs/*/DCIM/100_FUJI

    chris@comp2008:~$ echo $loc

    /home/chris/.gvfs/gphoto2 mount on usb%3A001,008/DCIM/100_FUJI

    Nous pouvons donc constater que l'expansion devrait fonctionner

  • Je suis maintenant passé à l'utilisation :

    loc = ``find ~/.gvfs -name 100_FUJI

    Je suis simplement curieux de savoir pourquoi il ne fonctionne pas tel quel.

  • Sortie de débogage à l'aide de sh -x

echo /home/chris/.gvfs/*/DCIM/100_FUJI

loc=/home/chris/.gvfs/*/DCIM/100_FUJI

rm -f /mnt/fujifilmA100

ln -s /home/chris/.gvfs/*/DCIM/100_FUJI/mnt/fujifilmA100

3voto

Joe H. Points 1887

Vous avez mentionné dans votre réponse à Tactical Vim que vous l'exécutez sous sudo -- ' ~ ' sera développé différemment sous sudo et sous votre utilisateur normal. Remplacez-la par ' ~chris ' ou coder en dur votre répertoire personnel.

2voto

davr Points 1729

Êtes-vous sûr d'avoir saisi le fichier .sh exactement comme indiqué ici ? Je viens de faire un test script en faisant exactement la même chose que vous et cela fonctionne pour moi.

Peut-être est-ce lié à l'étrange nom de répertoire avec des espaces, des signes % et des virgules ?

2voto

Essayez d'exécuter votre script sous 'sh -x' pour voir une sortie de débogage, cela vous donnera peut-être une idée. Je n'ai jamais vu echo utilisé de cette manière, cela pourrait être lié à cela ; est-ce que cela fonctionne si vous remplacez 'echo' par 'ls -d' (ou similaire, je ne suis pas sûr de votre sortie) à la place ?

0voto

kyleN Points 1225

J'ai modifié mon script comme suit :

loc=`echo ~chris/.gvfs/*/DCIM/`
sudo rm -f /mnt/camera
sudo ln -s "$loc" /mnt/camera

Notez que les sudo sont à l'intérieur du script.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X