我是bash的新手,遇到了一个我无法解决的问题。问题是我需要使用find -name,并将名称定义为变量。脚本的一部分:
read MYNAME
find -name $MYNAME
但是当我运行脚本时,输入'* sh'进行读取,结果为0。 但是,如果我直接在终端输入:
find -name '*sh'
它工作正常。
我也试过
read MYNAME
find -name \'$MYNAME\'
输入* sh进行读取但没有成功。
任何人都可以帮助我吗?
答案 0 :(得分:3)
最有可能
read MYNAME
find -name "$MYNAME"
是您要查找的版本。如果没有双引号"
,那么在运行*
之前,shell会在您的*sh
示例中展开find
,这就是您首次尝试无效的原因
答案 1 :(得分:2)
你可能想要
find -name "$MYNAME"
因为这会阻止$MYNAME
受到bash的路径名扩展(a.k.a。“globbing”)的影响,导致*sh
完整地传递给find
。一个关键的区别是,globbing不会与.ssh
等隐藏文件匹配,而find -name "*sh"
则会匹配。但是,由于您没有定义您正在寻找的预期行为,因此很难确定您需要什么。