s_iron 于 2010-01-02 11:24:10发表:
[i=s] 本帖最后由 s_iron 于 2010-1-2 11:25 编辑 [/i]如果是这样的话 shell 解释命令参数时先进行命令替换,命令替换后再对\ 处理 不知道对不对
wskttg 于 2009-12-28 23:28:01发表:
LZ的这个问题是一个典型的利用命令结果为指令赋值的例子。 说明如下:echo `echo \\z` 中的反引号并不是引用还是取值,也就是说这条命令首先执行反引号内的echo \\z 得到的结果是\z ,然后再将\z 赋给第一个echo 执行echo \z ,所以最后的结果就是z
zhaoyuzhong3694 于 2009-12-28 21:05:34发表:
15# heimareed 确实没用。:0)1
heimareed 于 2009-12-28 20:16:57发表:
有用吗???!!!
zhaoyuzhong3694 于 2009-12-28 16:44:50发表:
[i=s] 本帖最后由 zhaoyuzhong3694 于 2009-12-28 16:50 编辑 [/i]\\针对输入来讲是一个字符,就如word是一个单词一样。单个的\是个连接字符。
shampoo 于 2009-12-28 16:40:54发表:
11# zhaoyuzhong3694 哦,所以'\'把【回车】换成【不可印刷的一般字元】。
mengjie213 于 2009-12-28 16:32:02发表:
各抒己见哈,我再回头看看!
zhaoyuzhong3694 于 2009-12-28 16:27:30发表:
[i=s] 本帖最后由 zhaoyuzhong3694 于 2009-12-28 16:29 编辑 [/i]没有啊。 hello world是输出结果。
shampoo 于 2009-12-28 16:21:26发表:
9# zhaoyuzhong3694 你的换行字元还在呀! “\”只是把【回车】字元更换为一个【空白】字元!
zhaoyuzhong3694 于 2009-12-28 16:15:34发表:
\一般用于这中情况,输入的命令太常,为了分行显示,用\做标记输入的文本没输完。 echo \\z 输出结果是\z echo `echo \\z` 也就相当于,输完echo后输入一个\,表示换行输入,但输出结果不换行。
shampoo 于 2009-12-28 16:13:37发表:
“\\” 第一个"\",告诉电脑把特殊字元第二个"\",当做一般字元。 就这样啦!没有替换问题。 “\z”,“\”则把一般字元"z",当做另一个一般字元。所以这个'\'是多此一举。
mengjie213 于 2009-12-28 16:09:20发表:
再看看这个: 会更明白些阿: [mengjie@MJ ~]$ echo \z //这个不用解释了吧 z [mengjie@MJ ~]$ echo "\z" //输出字符串, z 不需要转义 ,转义字符失效 \z [mengjie@MJ ~]$ echo "\\z" //第一个 \ 把第二个 \ 转义啦结果自然是 \z \z
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 ~]$
shampoo 于 2009-12-28 16:06:42发表:
`echo \\z` 产生“\z” echo \z 自然产生“z”,哪儿错啦?
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
s_iron 于 2009-12-28 15:52:05发表:
谢谢楼上了 我不是想输出\z 而是想知道这两个\是怎样替换掉的,谢谢
shampoo 于 2009-12-28 15:14:45发表:
echo `echo '\'z` 试试这个,身边没有机器帮你试啦!
s_iron 于 2010-01-02 11:24:10发表:
[i=s] 本帖最后由 s_iron 于 2010-1-2 11:25 编辑 [/i]
如果是这样的话
shell 解释命令参数时先进行命令替换,命令替换后再对\ 处理
不知道对不对
wskttg 于 2009-12-28 23:28:01发表:
LZ的这个问题是一个典型的利用命令结果为指令赋值的例子。
说明如下:echo `echo \\z` 中的反引号并不是引用还是取值,也就是说这条命令首先执行反引号内的echo \\z 得到的结果是\z ,然后再将\z 赋给第一个echo 执行echo \z ,所以最后的结果就是z
zhaoyuzhong3694 于 2009-12-28 21:05:34发表:
15# heimareed
确实没用。:0)1
heimareed 于 2009-12-28 20:16:57发表:
有用吗???!!!
zhaoyuzhong3694 于 2009-12-28 16:44:50发表:
[i=s] 本帖最后由 zhaoyuzhong3694 于 2009-12-28 16:50 编辑 [/i]
\\针对输入来讲是一个字符,就如word是一个单词一样。单个的\是个连接字符。
shampoo 于 2009-12-28 16:40:54发表:
11# zhaoyuzhong3694
哦,所以'\'把【回车】换成【不可印刷的一般字元】。
mengjie213 于 2009-12-28 16:32:02发表:
各抒己见哈,我再回头看看!
zhaoyuzhong3694 于 2009-12-28 16:27:30发表:
[i=s] 本帖最后由 zhaoyuzhong3694 于 2009-12-28 16:29 编辑 [/i]
没有啊。
hello world是输出结果。
shampoo 于 2009-12-28 16:21:26发表:
9# zhaoyuzhong3694
你的换行字元还在呀!
“\”只是把【回车】字元更换为一个【空白】字元!
zhaoyuzhong3694 于 2009-12-28 16:15:34发表:
\一般用于这中情况,输入的命令太常,为了分行显示,用\做标记输入的文本没输完。
echo \\z
输出结果是\z
echo `echo \\z`
也就相当于,输完echo后输入一个\,表示换行输入,但输出结果不换行。
shampoo 于 2009-12-28 16:13:37发表:
“\\”
第一个"\",告诉电脑把特殊字元第二个"\",当做一般字元。
就这样啦!没有替换问题。
“\z”,“\”则把一般字元"z",当做另一个一般字元。所以这个'\'是多此一举。
mengjie213 于 2009-12-28 16:09:20发表:
再看看这个: 会更明白些阿:
[mengjie@MJ ~]$ echo \z //这个不用解释了吧
z
[mengjie@MJ ~]$ echo "\z" //输出字符串, z 不需要转义 ,转义字符失效
\z
[mengjie@MJ ~]$ echo "\\z" //第一个 \ 把第二个 \ 转义啦结果自然是 \z
\z
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 ~]$
shampoo 于 2009-12-28 16:06:42发表:
`echo \\z`
产生“\z”
echo \z
自然产生“z”,哪儿错啦?
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
s_iron 于 2009-12-28 15:52:05发表:
谢谢楼上了
我不是想输出\z
而是想知道这两个\是怎样替换掉的,谢谢
shampoo 于 2009-12-28 15:14:45发表:
echo `echo '\'z`
试试这个,身边没有机器帮你试啦!