Shell脚本中获取find命令输出失败的问题及代码修正求助
解决Shell脚本中find命令无法获取输出的问题
嘿,这个问题我之前也踩过坑!根源在于你没给变量加上双引号,当参数里包含空格、通配符或者特殊字符时,find命令会被错误拆分成多个参数,导致执行异常——而你在终端手动运行时,大概率下意识加了引号,所以能正常工作。
给你修正后的代码:
# 先检查参数数量是否正确,避免空参数导致的问题 if [ $# -ne 2 ]; then echo "用法错误:请传入两个参数,格式为 $0 <要查找的文件名> <目标目录>" exit 1 fi param_1="$1" param_2="$2" echo "第一个参数(文件名): $param_1" echo "第二个参数(目录): $param_2" # 关键:给变量加上双引号,确保它们作为单个整体传递给find list="$(find "$param_2" -name "$param_1" -type f)" # 打印结果验证 echo "找到的文件列表:" echo "$list"
核心修正点:
- 给
$param_1和$param_2包裹双引号,这样即使参数里有空格(比如目录名是我的文件)或者特殊字符,find也会把它们当作单个完整的参数处理,不会拆分。 - 新增了参数检查逻辑,避免用户忘记传参或者传参数量不对时脚本报错。
举个例子,如果你的目标目录是/home/user/My Files,不加引号的话,find会把/home/user/My和Files当作两个独立的路径去查找,自然找不到正确的文件;加上引号后,它才会正确识别整个目录路径。
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

