这可能看起来很搞笑,但为什么会这样呢?在第一行中,我附加了一个现有的本地用户变量,在第二行中,我得到了一个延续提示(它在我的终端中看起来与另一种颜色相同)。为什么延续提示?如何正确退出此表达式?那么如何使用命令的输出正确附加变量? pwd>> $ joe不起作用。
rcharette station-2-87 ~ $ joe=$joe\`pwd`
rcharette station-2-87 ~ $
rcharette station-2-87 ~ $ ;
rcharette station-2-87 ~ $
rcharette station-2-87 ~ $
rcharette station-2-87 ~ $ ^[
-bash: :s^[: substitution failed
rcharette station-2-87 ~ $
rcharette station-2-87 ~ $ exit
rcharette station-2-87 ~ $ ,
rcharette station-2-87 ~ $
rcharette station-2-87 ~ $
rcharette station-2-87 ~ $ exit
rcharette station-2-87 ~ $ ls
rcharette station-2-87 ~ $
答案 0 :(得分:3)
这是因为你有一个无与伦比的反击。你正在逃避第一个,所以这是第二个真正开始反击的字符串。
答案 1 :(得分:1)
joe=$joe\`pwd`
将被视为查找具有文字名joe\'pwd
的变量,因为您已经转义了第一个反引号。第二个反引号开始一个subshell命令,但没有其他文本,所以你得到继续提示。如果你试图将文字\插入新变量,那么你将不得不逃避它:
joe=$joe\\`pwd`
会给你类似的东西
joe=hello/home/users/etc...
如果您尝试动态构建路径,请使用/
代替... unix路径不要使用反斜杠。
答案 2 :(得分:1)
escape char(反斜杠)会将下一个char解释为文字。因此,在'第一行'之前的\会导致'被视为文字而不是,良好和开放的引用。因此,第二个'实际上是开放引用,之后的所有内容都被视为文字字符串。
为什么要添加反斜杠?只需删除它就可以了。
百里