You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何嵌套$(var)命令替换?Bash创建带日期临时文件失败求解

问题分析与解决

你的命令执行失败是因为mktemp的使用不符合要求:它需要路径中包含至少3个连续的X作为随机占位符来生成唯一文件名,而你当前的命令没有这个占位符,导致mktemp执行失败,文件无法生成。

根据你的需求,分两种场景处理:

场景1:仅需固定日期命名的日志文件

如果不需要避免同名文件冲突(比如每天只生成一个日志文件),不需要使用mktemp,直接赋值并确保文件存在即可:

# 生成带日期的日志文件路径
LOGFILE="/folder/program_log.$(date +'%Y%m%d')"
# 确保文件存在(如果文件已存在则不会修改内容)
touch "$LOGFILE"

执行后LOGFILE变量的值就是你期望的/folder/program_log.20230718。

场景2:需要日期前缀+随机后缀的唯一文件

如果要避免同名冲突(比如一天内可能生成多个日志文件),给mktemp添加随机占位符XXXXXX:

# 生成带日期和随机后缀的唯一文件
LOGFILE=$(/bin/mktemp "/folder/program_log.$(date +'%Y%m%d').XXXXXX")

执行后LOGFILE会保存类似/folder/program_log.20230718.ZsT456的路径。

额外注意事项

  • 确保/folder目录存在且有读写权限,若目录不存在,先执行:
    mkdir -p /folder
    
  • 变量赋值时建议用双引号包裹路径,避免路径中出现特殊字符导致错误。

内容的提问来源于stack exchange,提问作者Mm-Art-In

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:16:06