论坛风格切换切换到宽版
  • 984阅读
  • 8回复

[问题求助]如何解析用户输入的指令,包括命令和参数 [复制链接]

上一主题 下一主题
离线fishleong.
 
发帖
1929
C币
-61154
威望
331
贡献值
1
银元
-1
铜钱
4179
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
我是新手,老师留个作业让自己构建一个shell,大致框架我有了,但实现起来还是.有点.问题,怎么接受用户输入的命令后,解析,把命令和参数分别保存在数组里。            杀毒

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线canko.
发帖
1960
C币
-199371
威望
333
贡献值
1
银元
-1
铜钱
4286
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-14
#!/bin/bash
#Function : A example fro using array with shell in linux

#ip_segment存放有ip段的字符串

ip_segment="202.201.0.0 202.201.15.255"

#先设置当前分割符IFS为空格

IFS=" "

#把ip_segment转化为字符串

str=(${ip_segment[@]})

#取得数组元素,并显示出来

echo ${str[0]}
echo ${str[1]}
------------------------
再结合下面:


键盘读起变量值

我们可以通过read来读取变量值哦
下面我们来等待用户输入一个值并且显示出来

falcon@falcon:~$ read -p "请输入一个值 : "  input ; echo "你输入了一个值为 :" $input


即可。

离线qsums.
发帖
1994
C币
-193509
威望
384
贡献值
1
银元
-5
铜钱
4485
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-14
能不能用c语言实现阿?主要是我不想一个字符一个字符接受之后再判断。我想就是接受一个字符串,之后能分开。

离线skyj2005.
发帖
1850
C币
-61380
威望
285
贡献值
1
银元
-1
铜钱
3985
人人网人气币
0
只看该作者 地板  发表于: 2010-04-14
人呢?没有人帮我拉。。

离线regiet.
发帖
2169
C币
-633738
威望
385
贡献值
2
银元
-3
铜钱
4920
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-14
假如是执行外部程序的话,那是由那个程序自己解析的。你只要会用 execv 一类的函数就可以了。
执行 shell builtin 命令的话,那就请
man getopt
复制代码
事实上,这个是很通用的做法。

离线白乐天.
发帖
2018
C币
-140359
威望
350
贡献值
1
银元
-3
铜钱
4426
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-14


QUOTE:原帖由 swordfish.cn 于 2008-5-24 10:35 发表
假如是执行外部程序的话,那是由那个程序自己解析的。你只要会用 execv 一类的函数就可以了。
执行 shell builtin 命令的话,那就请

man getopt

事实上,这个是很通用的做法。



同意5楼的。。。用execv函数就可以执行shell啦。。

离线manbunet.
发帖
1923
C币
-61046
威望
353
贡献值
2
银元
-2
铜钱
4301
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-14
谢谢大家。。execv这个函数至少要从文件夹里调用吧。。但是肯定如果我输入echo good morning|sed /s/good/hi/g 的话,它不能区分这些东西的似乎。。还是需要我创建子进程来运行。关键是 我接受这一串字符,我怎么把他很容易的区分开来,让我的数组能分别接受 echo、good、morning、|、sed等。。

离线poomo.
发帖
2145
C币
-604700
威望
359
贡献值
5
银元
-3
铜钱
4675
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-14
还没完全解决呢。。兄弟们帮忙啊

离线304334153.
发帖
1993
C币
-60439
威望
374
贡献值
6
银元
2
铜钱
4456
人人网人气币
0
只看该作者 8楼 发表于: 2010-04-14
行了。。我自己解决了,谢谢大家
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个