Shell脚本中如何使用变量值替换文件内指定字符串
问题根因
Shell 中单引号会原样输出包裹的所有内容,不会解析内部的变量、转义符等特殊语法,所以你命令里的${SLURM_ARRAY}没有被替换为实际的变量值,直接作为替换字符串写入了文件。
修复方法
将 sed 命令的单引号替换为双引号即可,双引号内的变量会被 Shell 正常解析展开:
sed -i "s/lvl/${SLURM_ARRAY}/" prm.prm
特殊场景适配
- 如果你在 macOS 系统执行该命令,
sed -i要求显式指定备份文件的后缀,不需要备份的话可以写成:sed -i '' "s/lvl/${SLURM_ARRAY}/" prm.prm - 如果
SLURM_ARRAY变量的值包含/字符,需要替换 sed 的分隔符避免语法冲突,比如换成#作为分隔符:sed -i "s#lvl#${SLURM_ARRAY}#" prm.prm
内容的提问来源于stack exchange,提问作者rnp
相关产品推荐
相关产品推荐

