字符串切割思路--shell重定向 管道
2013-06-25 17:24
267 查看
在使用shell时,有是有会用到非常复杂的命令组,往往带有重定向、管道等操作,这里讨论的是如何将这些字符串分开,分割成单个的命令。比较复杂命令如下:
可以看出,在shell中,所有的命令组或者命令串都有一个共同的特点,那就是所有的命令串都是通过字符'|'、<'、'>'、'>>'来连接的,而事实上,bash支持的连接符基本上就上边三个,那么我们就可以通过这些字符来分割开单个的命令。
第一步,要判断输入的字符串是单个命令还是一个命令串,只要通过判断是否有'|'、'<'、'>'、'>>'出现。
这样操作后,切割命令就可以通过判断上边的三个特殊字符来完成,这里需要做一些检错工作,因为对于一个命令串,信息流入的端口只能有一个,要么是stdin,要么是输入重定向,无论何种情况,输入重定向符号<只能出现一次。
阅读(1273) | 评论(4) | 转发(0) |
0
上一篇:shell下,进程的前台与后台运行
下一篇:命令字符串中命令与参数的切割
相关热门文章
linux 常见服务端口
什么是shell
linux socket的bug??
linux的线程是否受到了保护?...
一个适用于windows和linux的抓...
debian7系统与ATI X2300显卡...
ubuntu sysklogd之配置文件介...
自己用的ubuntu环境搭建(一)...
linux 学习心得
用户输入操作和数据的显示...
给主人留下些什么吧!~~
tastesweet2009-09-01 11:41:20
没有了,这已经很详细了
回复 | 举报
chinaunix网友2009-08-31 12:10:54
详细点的有没有啊?
回复 | 举报
chinaunix网友2009-08-31 12:10:52
详细点的有没有啊?
回复 | 举报
chinaunix网友2009-08-31 12:10:46
详细点的有没有啊?
回复 | 举报
评论热议
ls -al | more > 1.txt ls -al | more >> 1.txt more < ls -al |
第一步,要判断输入的字符串是单个命令还是一个命令串,只要通过判断是否有'|'、'<'、'>'、'>>'出现。
if( strpbrk(tmp,"|<>")==0 ) // signle { // ANSI C中的库函数还是很好用的,熟悉操作这些库函数可以简化代码量 } |
char ch,str_p[LEN],*p=str_p; int i=strlen(p_tmp); //p_tmp为输入待切割字符串指针 while( (i--)>0 ) //通过i来检测是否到字符串尾部 { while( ( ( (ch=*p_tmp++)==' ')||(ch=='|')||(ch=='>')||(ch=='<') )&&(i--) ); // skip space //忽略空格和其他字符 while( (ch!='|')&&(ch!='\n')&&(ch!='<')&&(ch!='>')&&(i--) ) { (*p++)=ch; ch=*(p_tmp++); //获得字符,直到出现特殊字符 } *p='\0'; tag_tmp=tag; // insert | > >> < if( ch=='|') //判断特殊字符的类型 tag='|'; else if( ch=='<' ) tag='<'; else if( ch=='>'&&(ch=*p_tmp)=='>' ) tag='a'; // 字符>> 标记为a, else if( ch=='>'&&(ch=*p_tmp)!='>' ) tag='>'; else tag=' '; p=str_p; 这里save切割出的命令 } |
0
上一篇:shell下,进程的前台与后台运行
下一篇:命令字符串中命令与参数的切割
相关热门文章
linux 常见服务端口
什么是shell
linux socket的bug??
linux的线程是否受到了保护?...
一个适用于windows和linux的抓...
debian7系统与ATI X2300显卡...
ubuntu sysklogd之配置文件介...
自己用的ubuntu环境搭建(一)...
linux 学习心得
用户输入操作和数据的显示...
给主人留下些什么吧!~~
tastesweet2009-09-01 11:41:20
没有了,这已经很详细了
回复 | 举报
chinaunix网友2009-08-31 12:10:54
详细点的有没有啊?
回复 | 举报
chinaunix网友2009-08-31 12:10:52
详细点的有没有啊?
回复 | 举报
chinaunix网友2009-08-31 12:10:46
详细点的有没有啊?
回复 | 举报
评论热议
相关文章推荐
- 3_Shell语言―――输入输出重定向和管道概述
- linux shell 管道命令(pipe)使用及与shell重定向区别
- echo,Shell管道与重定向
- linux shell 管道命令(pipe)使用及与shell重定向区别
- shell变量、重定向、管道
- Bash Shell 字符串切割
- shell之重定向和管道
- linux shell 管道命令(pipe)使用及与shell重定向区别
- 浅说shell中I/O重定向与管道的区别
- linux shell 管道命令(pipe)使用及与shell重定向区别
- Shell中字符串的切割、拼接、比较、替换
- Shell基础:常用技巧&重定向&管道操作
- shell 学习之正则、别名以及管道重定向
- Unix & Linux大学教程(二):Shell、重定向和管道
- Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制
- linux_第9章Linux中shell配置、重定向及管道
- shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)
- Shell(二):变量、数据重定向和管道
- shell 学习(1) 执行,管道,重定向,逻辑分隔,变量,引号,运算
- 【shell】切割字符串