附加一个环境变量,哎呀我做了什么?

时间:2011-07-13 21:52:10

标签: bash environment-variables

这可能看起来很搞笑,但为什么会这样呢?在第一行中,我附加了一个现有的本地用户变量,在第二行中,我得到了一个延续提示(它在我的终端中看起来与另一种颜色相同)。为什么延续提示?如何正确退出此表达式?那么如何使用命令的输出正确附加变量? 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 ~ $ 

3 个答案:

答案 0 :(得分:3)

这是因为你有一个无与伦比的反击。你正在逃避第一个,所以这是第二个真正开始反击的字符串。

答案 1 :(得分:1)

joe=$joe\`pwd`

将被视为查找具有文字名joe\'pwd的变量,因为您已经转义了第一个反引号。第二个反引号开始一个subshel​​l命令,但没有其他文本,所以你得到继续提示。如果你试图将文字\插入新变量,那么你将不得不逃避它:

joe=$joe\\`pwd`

会给你类似的东西

joe=hello/home/users/etc...

如果您尝试动态构建路径,请使用/代替... unix路径不要使用反斜杠。

答案 2 :(得分:1)

escape char(反斜杠)会将下一个char解释为文字。因此,在'第一行'之前的\会导致'被视为文字而不是,良好和开放的引用。因此,第二个'实际上是开放引用,之后的所有内容都被视为文字字符串。

为什么要添加反斜杠?只需删除它就可以了。

百里