#!/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 =``查找〜/ .gvfs -name 100_FUJI
我只是好奇为什么它不能按原样工作。
使用 sh -x 调试输出
回显/home/chris/.gvfs/*/DCIM/100_FUJI
位置=/主页/克里斯/.gvfs/*/DCIM/100_FUJI
rm -f /mnt/fujifilmA100
ln -s /home/chris/.gvfs/*/DCIM/100_FUJI/mnt/fujifilmA100
答案1
您在回复 Tactical Vim 时提到,您在 sudo 下运行它 -- ' ~
' 在 sudo 下和在普通用户下会以不同的方式展开。将其更改为 ' ~chris
' 或对您的主目录进行硬编码。
答案2
您确定您输入的 .sh 文件与此处显示的完全相同吗?我刚刚编写了一个测试脚本,其功能与您完全相同,并且对我有用。
也许与带有空格、%符号和逗号的奇怪目录名称有关?
答案3
尝试在“sh -x”下运行脚本以查看一些调试输出,也许它会提供一些线索。我从未见过以这种方式使用 echo,它可能与此有关;如果您将“echo”替换为“ls -d”(或类似,不确定您的输出),它会起作用吗?
答案4
好的,我修改了我的脚本如下:
loc=`echo ~chris/.gvfs/*/DCIM/`
sudo rm -f /mnt/camera
sudo ln -s "$loc" /mnt/camera
请注意,sudo 位于脚本内部