Shell脚本执行mkdir test重复报错,如何将精确异常写入日志文件?
解决Shell脚本中mkdir重复执行的日志记录问题
这里给你调整后的脚本,既能处理文件夹已存在的情况,还能把指定的异常信息准确写入日志文件:
#!/bin/bash # 定义日志文件路径,你可以根据需求修改存储位置 LOG_FILE="mkdir_operation.log" # 尝试创建test文件夹 if mkdir test; then # 创建成功时写入日志,带上时间戳方便追溯 echo "$(date '+%Y-%m-%d %H:%M:%S') - 成功创建test文件夹" >> "$LOG_FILE" else # 捕获创建失败的场景,写入你指定的异常信息 ERROR_MSG="Already test folder is exist" echo "$(date '+%Y-%m-%d %H:%M:%S') - 错误: $ERROR_MSG" >> "$LOG_FILE" # 可选:如果需要在终端也显示错误提示,加上这行 echo "错误: $ERROR_MSG" >&2 fi
关键细节说明:
- 时间戳日志:
$(date '+%Y-%m-%d %H:%M:%S')给每条日志加上精确时间,后续排查问题时能清楚知道操作发生的时机。 - 条件判断逻辑:直接利用
mkdir命令的返回值做判断——创建成功时mkdir返回0,进入成功分支;返回非0值时(比如文件夹已存在),进入异常分支。 - 日志写入方式:用
>>追加写入日志,不会覆盖之前的记录,保证操作历史的完整性。 - 终端错误输出:
>&2是把错误信息输出到标准错误流,符合Shell脚本的常规错误输出规范,方便用户在执行脚本时即时看到问题。
小优化建议:
如果后续需要创建的文件夹名称可能包含空格或特殊字符,建议把文件夹名用引号包裹,比如mkdir "$FOLDER_NAME",避免出现意外的语法错误。
内容的提问来源于stack exchange,提问作者Mano
相关产品推荐
相关产品推荐

