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楼归入“如果你感兴趣”