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