如何从 linux cli 将 ENV VAR 名称打印到文件,而不是 VALUE

How to print ENV VAR name to file, NOT VALUE from linux cli

提问人:meh 提问时间:6/28/2023 最后编辑:Paul Hodgesmeh 更新时间:6/29/2023 访问量:46

问:

我有这个:

cat > ~/add_api_txt_hook.sh <<EOF 
#!/bin/bash 
... 
echo $MY_ENV_VAR
EOF

制作此文件时未设置MY_ENV_VAR。所以它使它在文件中成为“”。

我希望文件内容是

#!/bin/bash 
... 
echo $MY_ENV_VAR

不:

#!/bin/bash 
... 
echo ""

如何将实际的 ENV VAR KEY 打印到文件中?我已经搜索了互联网,但它只返回如何将值打印到文件中。

尝试了谷歌和围绕键()、“”、{} 等的各种语法......

Linux 环境变量命令 行界面 EOF CAT

评论

1赞 SiKing 6/28/2023
你在问吗?用逃逸斜线。echo \$MY_ENV_VAR
0赞 meh 6/28/2023
这正是我需要的!谢谢!!!!

答:

2赞 Paul Hodges 6/29/2023 #1

有几种方法可以实现此目的。
显然,正如 SiKing 所指出的,你可以反斜杠转义美元符号。

您也可以引用本身。而EOF

$: cat >x <<EOF
echo $PATH
EOF

的值(包括为空,如您的情况下)放在文件中,$PATH

$: cat >x <<'EOF'
echo $PATH
EOF

不:

$: cat x
echo $PATH

同样,您可以使用“here-string”:

$: cat <<<'echo $PATH'
echo $PATH

但请注意,无论使用单引号还是双引号,here-doc 的行为都大致相同 -

$: cat <<"EOF"
echo $PATH
EOF
echo $PATH

here-strings 区分;单引号不会扩展变量,但双精度号可以。

$: cat <<<"echo $PATH"
echo /c/Users/....(redacted)