红联Linux门户
Linux帮助

关于\在命令替换中

发布时间:2009-12-28 14:43:22来源:红联作者:s_iron
为什么 echo `echo \\z`只能输出 z
两个\是怎样替换掉的
文章评论

共有 17 条评论

  1. s_iron 于 2010-01-02 11:24:10发表:

    [i=s] 本帖最后由 s_iron 于 2010-1-2 11:25 编辑 [/i]

    如果是这样的话
    shell 解释命令参数时先进行命令替换,命令替换后再对\ 处理
    不知道对不对

  2. wskttg 于 2009-12-28 23:28:01发表:

    LZ的这个问题是一个典型的利用命令结果为指令赋值的例子。

    说明如下:echo `echo \\z` 中的反引号并不是引用还是取值,也就是说这条命令首先执行反引号内的echo \\z 得到的结果是\z ,然后再将\z 赋给第一个echo 执行echo \z ,所以最后的结果就是z

  3. zhaoyuzhong3694 于 2009-12-28 21:05:34发表:

    15# heimareed


    确实没用。:0)1

  4. heimareed 于 2009-12-28 20:16:57发表:

    有用吗???!!!

  5. zhaoyuzhong3694 于 2009-12-28 16:44:50发表:

    [i=s] 本帖最后由 zhaoyuzhong3694 于 2009-12-28 16:50 编辑 [/i]

    \\针对输入来讲是一个字符,就如word是一个单词一样。单个的\是个连接字符。

  6. shampoo 于 2009-12-28 16:40:54发表:

    11# zhaoyuzhong3694


    哦,所以'\'把【回车】换成【不可印刷的一般字元】。

  7. mengjie213 于 2009-12-28 16:32:02发表:

    各抒己见哈,我再回头看看!

  8. zhaoyuzhong3694 于 2009-12-28 16:27:30发表:

    [i=s] 本帖最后由 zhaoyuzhong3694 于 2009-12-28 16:29 编辑 [/i]

    没有啊。
    hello world是输出结果。

  9. shampoo 于 2009-12-28 16:21:26发表:

    9# zhaoyuzhong3694


    你的换行字元还在呀!
    “\”只是把【回车】字元更换为一个【空白】字元!

  10. zhaoyuzhong3694 于 2009-12-28 16:15:34发表:

    \一般用于这中情况,输入的命令太常,为了分行显示,用\做标记输入的文本没输完。
    echo \\z
    输出结果是\z
    echo `echo \\z`
    也就相当于,输完echo后输入一个\,表示换行输入,但输出结果不换行。

  11. shampoo 于 2009-12-28 16:13:37发表:

    “\\”
    第一个"\",告诉电脑把特殊字元第二个"\",当做一般字元。
    就这样啦!没有替换问题。

    “\z”,“\”则把一般字元"z",当做另一个一般字元。所以这个'\'是多此一举。

  12. mengjie213 于 2009-12-28 16:09:20发表:

    再看看这个: 会更明白些阿:
    [mengjie@MJ ~]$ echo \z //这个不用解释了吧
    z
    [mengjie@MJ ~]$ echo "\z" //输出字符串, z 不需要转义 ,转义字符失效
    \z
    [mengjie@MJ ~]$ echo "\\z" //第一个 \ 把第二个 \ 转义啦结果自然是 \z
    \z

  13. mengjie213 于 2009-12-28 16:07:00发表:

    [mengjie@MJ ~]$ echo z
    z
    [mengjie@MJ ~]$ echo \\z
    \z
    [mengjie@MJ ~]$ echo "\\z"
    \z
    [mengjie@MJ ~]$ echo \z
    z
    [mengjie@MJ ~]$ echo "\z"
    \z
    [mengjie@MJ ~]$

  14. shampoo 于 2009-12-28 16:06:42发表:

    `echo \\z`
    产生“\z”

    echo \z
    自然产生“z”,哪儿错啦?

  15. mengjie213 于 2009-12-28 16:05:50发表:

    [mengjie@MJ ~]$ echo `echo \\z`
    z
    [mengjie@MJ ~]$ echo \\z
    \z
    [mengjie@MJ ~]$ echo \z
    z
    [mengjie@MJ ~]$ echo "\z"
    \z

    解: echo \\z 结果是 \z
    echo \z 结果是 z
    \是转义字符, 后面是 z 转义失效 输出 z

  16. s_iron 于 2009-12-28 15:52:05发表:

    谢谢楼上了
    我不是想输出\z
    而是想知道这两个\是怎样替换掉的,谢谢

  17. shampoo 于 2009-12-28 15:14:45发表:

    echo `echo '\'z`

    试试这个,身边没有机器帮你试啦!