免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: mfkp3
打印 上一主题 下一主题

一直萦绕在心中的一个疑问 关于重定向 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-04-07 03:21 |只看该作者

回复 #6 justlooks 的帖子

大侠我试验了一下
和你说的有点区别

[root@localhost ~]# cat 1
show me the money
whosyourdaddy
[root@localhost ~]# cat <<<1   这里不用手动输入
1
[root@localhost ~]# cat <<EOF
> 1
> EOF
1                                                         这两次都要手动输入
[root@localhost ~]# cat <<'EOF'
> 1
> EOF
1

按答案应该是先执行cat < 读取输入 然后  <<1让1成为标准输入
但是为什么是这个顺序了?
有朋友给解释一下吗

[ 本帖最后由 Lx308033262 于 2009-4-7 03:39 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2009-04-07 10:04 |只看该作者
原帖由 Lx308033262 于 2009-4-7 03:21 发表
大侠我试验了一下
和你说的有点区别


按答案应该是先执行cat < 读取输入 然后   


大侠倒不敢当,不过你这个理解很奇怪 <<<本来就1个符号 ,和重定向没有关系
是here string 我们写here document不是这么来的么
<<EOF
你的内容
EOF

这个是省略了 EOF 直接 <<< 你的内容

论坛徽章:
0
13 [报告]
发表于 2009-04-07 12:54 |只看该作者
我更关注shell 的可移植性, 也就是该特性/写法是bash特有的, 还是也被其他shell(特别的ksh)支持:

=======
# cat <<<1
# cat <1 >>1
# cat <1 >1
=======
cat <<<1 这种写法只有bash支持.

# cat <1 >>1
# cat <1 >1

ksh不支持打开同一个文件同时作为stdin&stdout

$ cat <1 >>1
cat: Cannot use - as both input and output.

论坛徽章:
0
14 [报告]
发表于 2009-04-07 13:16 |只看该作者
应该是cat不支持 我这边也是ksh,但是支持cat <1 >>1
应该是cat的版本问题

论坛徽章:
0
15 [报告]
发表于 2009-04-07 13:38 |只看该作者
原帖由 皇家救星 于 2009-4-7 13:16 发表
应该是cat不支持 我这边也是ksh,但是支持cat >1
应该是cat的版本问题


你说得对,  是cat不支持, 与shell无关.从这个error message就可以看出来 cat: Cannot use ....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP