BASH找-name(读变量)

时间:2013-03-20 01:25:02

标签: bash variables find

我是bash的新手,遇到了一个我无法解决的问题。问题是我需要使用find -name,并将名称定义为变量。脚本的一部分:

read MYNAME
find -name $MYNAME

但是当我运行脚本时,输入'* sh'进行读取,结果为0。 但是,如果我直接在终端输入:

find -name '*sh'

它工作正常。

我也试过

read MYNAME
find -name \'$MYNAME\' 

输入* sh进行读取但没有成功。

任何人都可以帮助我吗?

2 个答案:

答案 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"则会匹配。但是,由于您没有定义您正在寻找的预期行为,因此很难确定您需要什么。