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作为参数.
为什么会这样?以及如何避免这种情况?
您还需要在脚本内部保护*字符不受shell扩展的影响:
echo "$1"
find . -name "$1"
Run Code Online (Sandbox Code Playgroud)
(编辑为包含当前目录作为查找的参数.)