Curingas não sendo substituídos

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

Por alguma razão, a variável * não é substituída pelo único valor possível e recebe o valor /home/chris/.gvfs/*/DCIM/100_FUJI. Alguém tem uma ideia do porquê?

Por favor, note:

  • Se a expansão global falhar, o padrão não será substituído. Eu corri o comandos:

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

    chris @ comp2008: ~ $ echo $ loc

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

    Assim, podemos ver a expansão deve trabalho

  • Agora mudei para:

    loc = '' encontra ~ / .gvfs -name 100_FUJI

    Estou apenas curioso para saber porque não funciona como é.

  • Depurando saída usando 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

    
por Casebash 29.09.2009 / 02:07

4 respostas

0

Ok, modifiquei meu script da seguinte forma:

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

Observe que o sudo está dentro do script

    
por 03.04.2010 / 00:39
3

Você mencionou em sua resposta ao Tactical Vim que está executando isso sob sudo - ' ~ ' será expandido de maneira diferente sob sudo vs. em seu usuário normal. Altere para ' ~chris ' ou codifique seu diretório pessoal.

    
por 30.09.2009 / 14:38
2

Tem certeza de que inseriu o arquivo .sh exatamente como mostrado aqui? Acabei de fazer um script de teste fazendo exatamente a mesma coisa que você e funciona para mim.

Talvez tenha algo a ver com o nome do diretório estranho com espaços,% -signs e vírgulas?

    
por 29.09.2009 / 02:17
2

Tente executar seu script em 'sh -x' para ver alguma saída de depuração, talvez isso forneça uma pista. Eu nunca vi eco usado dessa maneira, pode ser algo relacionado a isso; funciona se você substituir 'echo' por 'ls -d' (ou similar, não tem certeza sua saída)?

    
por 30.09.2009 / 00:39

Tags