3

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

read MYNAME
find -name $MYNAME

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

find -name '*sh'

它工作正常。

我也试过

read MYNAME
find -name \'$MYNAME\' 

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

谁能帮我吗?

4

2 回答 2

4

最可能

read MYNAME
find -name "$MYNAME"

是您正在寻找的版本。如果没有双引号",shell 将在运行之前*在您的*sh示例中扩展,find这就是您的第一次尝试不起作用的原因

于 2013-03-20T01:39:12.690 回答
3

你可能想要

find -name "$MYNAME"

因为这可以防止$MYNAME受到 bash 的路径名扩展(又名“globbing”)的影响,从而导致*sh被完整地传递给find. 一个关键区别是通配符不会匹配隐藏文件,例如.ssh, 而find -name "*sh"会。但是,由于您没有定义您正在寻求的预期行为,因此很难确定您需要什么。

于 2013-03-20T01:40:49.240 回答