LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 922|回复: 3

这个脚本有什么错误?

[复制链接]
发表于 2006-2-16 05:56:42 | 显示全部楼层 |阅读模式
#!/bin/bash
#You can add more patterns, example: -e 's/^1.000000/H'

function Usage { echo " error: $*" 2>&1; exit 1; }

if (( $# != 2 ))
then
    Usage "$0: requires two arguements"
fi

        sed -e 's/^6.000000/6/g' -e 's/^7.000000/7/g' -e 's/^8.000000/8/g' "$1" >& "$2"

如果这样执行的话,./script 1 2
输出结果不到2里边,而是直接到屏幕了,
如果用./script xx yy
输出结果就到yy里边了。
我想这个是因为文件名的缘故吧,为什么数字不可以用呢。
我如何修改这个脚本,就可以接受2的文件名。:thank
发表于 2006-2-16 08:20:06 | 显示全部楼层
sed -e 's/^6.000000/6/g' -e 's/^7.000000/7/g' -e 's/^8.000000/8/g' "$1" >& "$2"
改为
sed -e 's/^6.000000/6/g' -e 's/^7.000000/7/g' -e 's/^8.000000/8/g' "$1" > "$2"
就没问题了。
如果用原脚本,运行为 ./script  1 3
就会发现错误为:Bad file descriptor
回复 支持 反对

使用道具 举报

发表于 2006-2-16 08:45:29 | 显示全部楼层
是重定向的问题,看这里:
Post by http://www-128.ibm.com/developerworks/cn/linux/l-iotips/index.html

重新定义文件标识符可以用i>&j命令,表示把文件标识符i重新定向到j,你可以把"&"理解为"取地址"

>&就是重新定向到了屏幕。
回复 支持 反对

使用道具 举报

发表于 2006-2-16 16:43:45 | 显示全部楼层
0 标准输入
1 标准输出
2 标准错误
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表