Bash 如何使用herdoc语法保存文件,但保留实际的变量输出?

Bash 如何使用herdoc语法保存文件,但保留实际的变量输出?,bash,shell,unix,heredoc,Bash,Shell,Unix,Heredoc,cat test.sh #! /usr/bin/env bash #some other commands #some other commands loc="$(which chromium-browser)" cat > loc.txt <<'endmsg' location = '$loc' endmsg 因为“哪个chromium浏览器”实际上是-/usr/bin/chromium浏览器 期望值 cat loc.txt location = '$

cat test.sh

#! /usr/bin/env bash

#some other commands
#some other commands
loc="$(which chromium-browser)"
cat > loc.txt <<'endmsg'
location = '$loc'
endmsg
因为“哪个chromium浏览器”实际上是-/usr/bin/chromium浏览器

期望值

cat loc.txt

location = '$loc'
location = /usr/bin/chromium-browser
是否有任何方法可以将实际的变量输出保存到另一个文件中,而不是直接保存原始文本。
很好,答案不使用herdeoc来实现这一点,尽管做这么简单的事情最好不要太复杂。

只需删除单引号:

#/usr/bin/env bash
#其他一些命令
#其他一些命令
loc=“$(哪个浏览器)”

cat>loc.txt请参阅:@Cyrus我尝试过像这样更改cat行,以引用已接受的答案来添加bashslash-cat>loc.txt您不应该转义分隔符的任何部分。没有单引号、双引号或反斜杠。您也不希望在here文档中使用单引号,否则您将得到
'location=/usr/bin/chromium browser'
谢谢您指出了这个错误