#!/bin/bash
loc=`echo ~/.gvfs/*/DCIM/100_FUJI`
rm -f /mnt/fujifilmA100
ln -s "$loc" /mnt/fujifilmA100
由于某种原因,变量 * 没有被唯一可能的值替换,而是被赋予值 /home/chris/.gvfs/*/DCIM/100_FUJI。有谁知道为什么?
请注意:
如果全局扩展失败,则不会替换该模式。我运行了命令:
chris@comp2008:~$ loc=``echo ~/.gvfs/*/DCIM/100_FUJI
chris@comp2008:~$ echo $loc
/home/chris/.gvfs/gphoto2 安装在 usb%3A001,008/DCIM/100_FUJI
所以我们可以看到扩展应该有效
我现在已经切换到使用:
loc = ``find ~/.gvfs -name 100_FUJI
我只是好奇为什么它不能按原样工作。
使用 sh -x 调试输出
回声/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
您在对 Tactical Vim 的回复中提到您在 sudo 下运行它——
~
在 sudo 下与在普通用户下,' ' 的扩展方式将有所不同。将其更改为 '~chris
' 或硬编码您的主目录。您确定您输入的 .sh 文件与此处显示的完全一样吗?我刚刚制作了一个与您完全相同的测试脚本,它对我有用。
也许与带有空格、% 符号和逗号的奇怪目录名称有关?
尝试在“sh -x”下运行你的脚本来查看一些调试输出,也许它会提供一个线索。我从未见过以这种方式使用回声,它可能与此有关;如果你用'ls -d'(或类似的,不确定你的输出)代替'echo',它会起作用吗?
好的,我修改了我的脚本如下:
请注意,sudo 在脚本中