Shell脚本创建含日期的日志文件时出现ambiguous redirect报错求助
你遇到的ambiguous redirect报错核心原因是包含空格的文件路径没有用双引号包裹,shell会把空格分隔的内容识别为多个独立参数,导致重定向目标不明确。
修复后的代码
currentDate=$(date) logFileName="$file_name $currentDate.log" # 先确保日志存储目录存在,避免目录不存在报错 mkdir -p "logFolder/$repo_name" # 包含变量的文件路径全部用双引号包裹,避免分词问题 echo "$USER 操作了 $file_name,操作时间:$(date)" >> "logFolder/$repo_name/$logFileName" read -p "请输入操作注释:" comment # 注释变量也用双引号包裹,避免特殊字符导致写入异常 echo "$comment" >> "logFolder/$repo_name/$logFileName"
可选优化建议
- 如果不需要日志文件名带空格,可以将日期格式替换为无空格格式,兼容性更好,示例:
# 生成类似20211030_191311的时间格式,最终文件名形如pizza.html_20211030_191311.log currentDate=$(date +"%Y%m%d_%H%M%S") logFileName="${file_name}_${currentDate}.log" - 所有包含空格、特殊字符的shell变量,使用时都建议用双引号包裹,避免shell自动分词导致的各类异常。
内容的提问来源于stack exchange,提问作者Casper Josh
相关产品推荐
相关产品推荐

