Linux命令行如何将环境变量名而非值写入文件
解决Here-Doc中保留环境变量名不被展开的问题
要让echo $MY_ENV_VAR原封不动写入目标脚本文件,只需对here-doc的结束标记做简单修改:
cat > ~/add_api_txt_hook.sh <<'EOF' #!/bin/bash ... echo $MY_ENV_VAR EOF
核心逻辑是:默认的<<EOF会触发Bash对内容进行变量替换、命令替换等解析操作,所以未设置的$MY_ENV_VAR会被替换为空字符串;而用单引号包裹结束符'EOF'后,Bash会把整个here-doc内容当作纯文本处理,不做任何解析,$MY_ENV_VAR就能完整保留在文件里。
如果只是单个变量需要保留,也可以单独转义变量名的$符号:
cat > ~/add_api_txt_hook.sh <<EOF #!/bin/bash ... echo \$MY_ENV_VAR EOF
但如果脚本里有多个变量需要保留,第一种用单引号包裹结束符的方法更高效,不用逐个转义每个$。
内容的提问来源于stack exchange,提问作者meh
相关产品推荐
相关产品推荐

