Board logo

标题: 关于重定向的写法,为什么>file echo abc? [打印本页]

作者: leson     时间: 2008-11-17 20:13    标题: 关于重定向的写法,为什么>file echo abc?

看了最近版主HAT以及其他人的一些帖子, 好像大家都喜欢>file echo abc 这种将文件写在前面的写法, 若同时接受输入输出,>outfile sort <infile 请问为什么要这样? 我觉得这样不好,有时候abc后面多写了几个空格, 尤其在重定向的场合, 出现了问题很难定位出, echo abc>file, 则可极大地避免这种错误。 另外感觉>outfile sort <infile, 明显不如sort <infile >outfile直观! 大家怎么看?

作者: tireless     时间: 2008-11-17 20:29
>file echo abc 这样的方式: 我也感觉有些别扭,阅读起来怪怪的感觉; 但如果要输出的字符很长,如果在一开头就看到 >a.txt,就会更快地知道是输出到文件,而不用一直跟着 echo 直到行尾。 对此我没有坚定的立场...有时会这样用,有时不会...

作者: HAT     时间: 2008-11-17 21:07
>a.txt echo 3721 我这样写是为了避免在行尾产生多余的空格 如果你感兴趣的话还可以这样写 echo>a.txt 3721

作者: pusofalse     时间: 2008-11-17 21:21
如果echo后的内容是0-9中的某个数字呢? echo 2>a.txt,出错。。。 echo 2 >a.txt,其实你只想输出2,不想输出2之后的空格到a.txt >a.txt echo 2,这样呢?、、、正常。 >a.txt echo 3 ,3之后还有空格,正常。 (echo 2)>a.txt 同样正常。 如果感觉别扭的话,就用最后的这个方法吧。

作者: leson     时间: 2008-11-17 21:24
C:\>>file echo 3721

C:\>for /F "delims=" %I in (file) do @echo "%I"
"3721     "

C:\>echo 3721         >file

C:\>for /F "delims=" %I in (file) do @echo "%I"
"3721         "

C:\>echo 3721>file

C:\>for /F "delims=" %I in (file) do @echo "%I"
"3721"
不太明白HAT所说的>a.txt echo 3721这样写是为了避免行尾出现多余的空格? 如何理解?

作者: leson     时间: 2008-11-17 21:29
第4楼所提及的情形,我觉得使用: echo ^1>file echo ^2>file 等比较好理解一些, 我需要知晓这时候1、2有其特殊含义, 就像对待正规表达式中元字符一样,需要转义。

作者: HAT     时间: 2008-11-17 22:44    标题: Re 5楼

willsort 兄同样举过 3721 这个例子,也同样被问到这个问题。 具体的,我也不想多说了,你就当 3721 是个变量吧,呵呵。 至于6楼提到的转义,可以跟4楼的加扩号,等方法一起和3楼归入“如果你感兴趣”