Bash脚本拼接文件名时短横线被替换为空格的问题求助
Bash脚本变量拼接时短横线被替换为空格的解决方法
你的问题核心不是拼接语法错误,而是year、month、day这些变量本身包含多余的首尾空格,导致拼接时短横线被空格覆盖。
解决步骤:
检查变量是否含多余空格
执行以下命令查看变量实际内容:echo "'$year'" echo "'$month'" echo "'$day'"如果输出类似
'2024 '(末尾带空格),就说明变量存在多余空格。清理变量中的空格
可以用两种方法:- 简单通用版(依赖xargs):
year=$(echo "$year" | xargs) month=$(echo "$month" | xargs) day=$(echo "$day" | xargs) - Bash内置高效版(需先开启扩展):
shopt -s extglob year=${year##+([[:space:]])} year=${year%%+([[:space:]])} month=${month##+([[:space:]])} month=${month%%+([[:space:]])} day=${day##+([[:space:]])} day=${day%%+([[:space:]])}
- 简单通用版(依赖xargs):
规范拼接文件名
用双引号包裹整个赋值语句,避免意外的分词问题:FILEDIR="${root_path}${year}/${month}/${day}/${filename_zero}_${year}-${month}-${day}-${filename_one}"
执行以上步骤后,再打印echo "$FILEDIR",就能得到你期望的格式:
public/2024/03/18/105610_2024-03-18-12:33:42.mp4
内容的提问来源于stack exchange,提问作者Yagmur CA
相关产品推荐
相关产品推荐

