bash脚本采用固定参数值而不是实际传递的值

vai*_*war 0 bash shell command-line-arguments

我有简单的bash脚本find.sh来查找文件

==>cat find.sh

echo $1

find -name $1
Run Code Online (Sandbox Code Playgroud)

但它有时并没有采用正确的论据,而是采用固定的论证

例如

find.sh 'ECSv2_P_TCP_FUNC_060*'

ECSv2_P_TCP_FUNC_060 ECSv2_P_TCP_FUNC_060.backup
Run Code Online (Sandbox Code Playgroud)

虽然我已通过'ECSv2_P_TCP_FUNC_060*',但它已将ECSv2_P_TCP_FUNC_060 ECSv2_P_TCP_FUNC_060.backup作为参数.

为什么会这样?以及如何避免这种情况?

Chr*_*ert 5

您还需要在脚本内部保护*字符不受shell扩展的影响:

echo "$1"
find . -name "$1"
Run Code Online (Sandbox Code Playgroud)

(编辑为包含当前目录作为查找的参数.)