在bash中,如何在不将$作为变量读取的情况下回显它?

在bash中,如何在不将$作为变量读取的情况下回显它?,bash,heredoc,Bash,Heredoc,我试着教我的兄弟姐妹bash有一段时间了,然后我决定在bash中制作一个关于如何做bash的程序。但是当涉及到一些变量时,比如像这样一个简单的while循环来回音,告诉他们它看起来如何等等 echo "var=1 while [ $var == 1 ]; do read item $item done t=2" 这是第一个关于while循环的教学,它教while循环如何循环直到被打断,或者不再跟随参数,从而得到t=2(进入下一个级别)。但每次我回音我都会 var=1 while [ 1 ==

我试着教我的兄弟姐妹bash有一段时间了,然后我决定在bash中制作一个关于如何做bash的程序。但是当涉及到一些变量时,比如像这样一个简单的while循环来回音,告诉他们它看起来如何等等

echo "var=1
while [ $var == 1 ]; do
read item
$item
done
t=2"
这是第一个关于while循环的教学,它教while循环如何循环直到被打断,或者不再跟随参数,从而得到t=2(进入下一个级别)。但每次我回音我都会

var=1
while [ 1 == 1]; do
read item

done
t=2
那么,有没有办法与美元符号相呼应呢。不用我在节目中说我不能附和一个美元符号,记得把美元符号放在这个前面。因为我已经知道这会给这些东西带来问题


感谢您的高级回答。

无论您在哪里有
$VAR
,请将其替换为
\$VAR
。简而言之,\是一个转义字符,它将“忽略”后面的特殊字符


因此,在您的情况下,使用
\$item

无论您在哪里
$VAR
,将其替换为
\$VAR
。简而言之,\是一个转义字符,它将“忽略”后面的特殊字符

因此,在您的情况下,使用
\$item

将其反斜杠


echo "var=1
while [ \$var == 1 ]; do
read item
\$item
done
t=2"

echo“var=1
而[\$var==1];则
阅读项目
\$item
完成
t=2“
将其反斜杠


echo "var=1
while [ \$var == 1 ]; do
read item
\$item
done
t=2"

echo“var=1
而[\$var==1];则
阅读项目
\$item
完成
t=2“
您可以使用:

不幸的是,
cat
是一个外部实用程序。但无需外部呼叫即可进行:

while read -r x; do echo "$x"; done <<'XXX'
var=1
while [ $var == 1 ]; do
read item
$item
done
t=2
XXX
当然,前面提到的双QOUTING标记和转义符
$
符号。

您可以使用:

不幸的是,
cat
是一个外部实用程序。但无需外部呼叫即可进行:

while read -r x; do echo "$x"; done <<'XXX'
var=1
while [ $var == 1 ]; do
read item
$item
done
t=2
XXX

当然,前面提到的双QOUTING标记和转义符号
$

ha!我也想到了埃雷多克……:)+1@Kent:不是最好的解决方案,
cat
不是内置功能。无论是转义(反斜杠还是使用单引号)似乎都更好。首先出现的当然是单引号和转义。但是他们已经在这里得到了回答,我认为单引号的heredoc也可以工作,并且在你的回答中也发现了……非常酷,我提供了一些道具来解释它是如何工作的,我可能会使用这个。哈!我也想到了埃雷多克……:)+1@Kent:不是最好的解决方案,
cat
不是内置功能。无论是转义(反斜杠还是使用单引号)似乎都更好。首先出现的当然是单引号和转义。但是他们已经在这里得到了回答,我认为单引号的heredoc也可以工作,并且在你的回答中也发现了……非常酷,我提供了一些道具来解释它是如何工作的,我可能会使用这个。
echo 'var=1
while [ $var == 1 ]; do
read item
$item
done
t=2'