免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4944 | 回复: 21
打印 上一主题 下一主题

关于进程替换在命令行与脚本文件中执行不相同的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-05 12:28 |只看该作者 |倒序浏览
现在有一个进程替换的问题向大家请教:当直接在bash的交互式命令中输入:
while read name; do echo $name; done< <(echo "
dfasdf
dsfa
afda"|grep -Ev "(dsfa)|(^ *$)")
这样执行的话是没有问题的,但当把它放入到一个脚本文件中进行执行的时候:
#!/bin/bash

while read name; do echo $name; done< <(echo "
dfasdf
dsfa
#afda"|grep -Ev "(dsfa)|(^ *$)")

却出现了如下的错误:
test.sh: line 3: syntax error near unexpected token `<'
test.sh: line 3: `while read name; do echo $name; done< <(echo "'

这是为什么呢?

论坛徽章:
0
2 [报告]
发表于 2009-03-05 12:29 |只看该作者

回复 #1 liujw2001 的帖子

再注明一下,脚本中的#是没有影响的

论坛徽章:
0
3 [报告]
发表于 2009-03-05 12:36 |只看该作者

回复 #1 liujw2001 的帖子

系统把你的#误以为是注释了

try :

dfasdf
dsfa#afda"|grep -Ev "(dsfa)|(^ *$)")

论坛徽章:
0
4 [报告]
发表于 2009-03-05 12:40 |只看该作者
谢谢回复
#!/bin/bash

while read name; do echo $name; done< <(echo "
dfasdf
dsfa
afda"|grep -Ev "(dsfa)|(^ *$)")

这是修改后的脚本,但是仍然报有同样的错误

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
5 [报告]
发表于 2009-03-05 12:41 |只看该作者

回复 #1 liujw2001 的帖子

关于进程替换?

LZ是什么环境?

论坛徽章:
0
6 [报告]
发表于 2009-03-05 12:46 |只看该作者
我不知您所指的环境是什么意思?
是在bash下,
[root@localhost bashfile]# env
HOSTNAME=localhost.localdomain
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=::ffff:192.168.25.1 1455 22
QTDIR=/usr/lib/qt-3.3
SSH_TTY=/dev/pts/1
USER=root
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01r=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
SSH_AUTH_SOCK=/tmp/ssh-rxcunp6261/agent.6261
KDEDIR=/usr
MAIL=/var/spool/mail/root
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
INPUTRC=/etc/inputrc
PWD=/root/bashfile
LANG=zh_CN.UTF-8
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=::ffff:192.168.25.1 1455 ::ffff:192.168.25.129 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/env
OLDPWD=/root

论坛徽章:
0
7 [报告]
发表于 2009-03-05 12:49 |只看该作者

回复 #6 liujw2001 的帖子

把这个结果贴出来
cat /etc/issue

论坛徽章:
0
8 [报告]
发表于 2009-03-05 12:52 |只看该作者
[root@localhost bashfile]# cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 6)
Kernel \r on an \m

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
9 [报告]
发表于 2009-03-05 12:54 |只看该作者
#!/bin/bash
要写在脚本的第一行

然后 chmod +x test.sh && ./test.sh

论坛徽章:
0
10 [报告]
发表于 2009-03-05 12:55 |只看该作者

回复 #1 liujw2001 的帖子

见意你这样

echo "
dfasdf
dsfa#afda"|grep -Ev "(dsfa)|(^ *$)"| while read name; do echo "$name"; done
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP