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

Unix Bash脚本生成XML文件时变量未替换问题求助

解决Bash脚本生成XML时变量不替换的问题

问题出在你使用了<< 'EOF'的写法——单引号包裹的EOF会让Shell将分界符内的内容原样输出,不会解析其中的变量、命令替换等,所以$getTheDate没有被替换成实际日期。

修复方案

去掉EOF两侧的单引号,改用无引号的<< EOF,这样Shell会正常解析变量:

#!/bin/bash
getTheDate=$( date | awk '{print $1, $2, $3, $4, $5}' )

cat > /Users/Admin/Desktop/changeFile.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<changeData>
<Applied>"$getTheDate"</Applied>
<Info>The data was changed successfully</Info>
</changeData>
EOF

优化建议

可以直接用date命令的格式化参数替代awk处理,更高效简洁:

#!/bin/bash
# 用date内置格式化生成目标日期字符串
getTheDate=$(date "+%a %d %b %Y %T")

cat > /Users/Admin/Desktop/changeFile.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<changeData>
<Applied>"$getTheDate"</Applied>
<Info>The data was changed successfully</Info>
</changeData>
EOF

其中date格式化参数的含义:

  • %a:缩写星期名称(如Thu)
  • %d:两位数字日期(如09,若要单个数字可改用%e)
  • %b:缩写月份名称(如Feb)
  • %Y:四位年份
  • %T:24小时制时间(HH:MM:SS)

内容的提问来源于stack exchange,提问作者Manu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:10:26