QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2152|回复: 32

急寻脚本案例

[复制链接]
发表于 2005-5-9 09:58:00 | 显示全部楼层 |阅读模式



怎样用脚本编写菜单模式的操作?

具体要求AIX机器上,有ksh,csh,bsh,就是没有bash,没有dialog

需要写成菜单模式的,可以和用户交互,让用户输入数据(不是从命令行输入)

急!

我也知道不该放在这里……但是急啊,等下午或者明天我就把这个帖子mv到shell版面去

这里说的菜单模式就是对话框那样的样子,如果没有,那么任何形式可以和用户方便的交互都可以啦




下面是一个程序的输出

[code:1]

TIME                    TRAHIS     HISBAL
------------------- ---------- ----------
2005-05-09.09:24:51       2074        870

[/code:1]

如何把2074和870提取出来保存到TRAHIS和HISBAL两个变量里面呢?
发表于 2005-5-9 10:12:03 | 显示全部楼层
错字错到你这样的程度,佩服佩服

你问的我不会,不好意思!
回复

使用道具 举报

 楼主| 发表于 2005-5-9 10:28:49 | 显示全部楼层
下面是一个程序的输出

[code:1]

TIME                    TRAHIS     HISBAL
------------------- ---------- ----------
2005-05-09.09:24:51       2074        870

[/code:1]

如何把2074和870提取出来保存到TRAHIS和HISBAL两个变量里面呢?
回复

使用道具 举报

发表于 2005-5-9 10:36:42 | 显示全部楼层
awk can do the work,but I am not good at awk

TIME                    TRAHIS     HISBAL
------------------- ---------- ----------
2005-05-09.09:24:51       2074        870



如何把2074和870提取出来保存到TRAHIS和HISBAL两个变量里面呢?
回复

使用道具 举报

发表于 2005-5-9 10:37:16 | 显示全部楼层
cdialog之类的都没有么?
那你惨了,用C吧
回复

使用道具 举报

 楼主| 发表于 2005-5-9 10:38:34 | 显示全部楼层
没有编译器,怎么用c嘛 :neutral:
回复

使用道具 举报

发表于 2005-5-9 10:40:31 | 显示全部楼层
awk/sed这两个工具是写脚本的强悍工具啊~~~
回复

使用道具 举报

 楼主| 发表于 2005-5-9 10:41:25 | 显示全部楼层
VimChina, 我知道啊,可是现在时间不允许我现学啦,渴求牛人帮忙给个大概的写法
回复

使用道具 举报

发表于 2005-5-9 10:41:53 | 显示全部楼层
考虑装一个dialog吧,结合sed/awk,差不多可以搞定了
不过我awk/sed不熟
回复

使用道具 举报

发表于 2005-5-9 10:46:33 | 显示全部楼层
[quote:11524c4f9b="atfa"]VimChina, 我知道啊,可是现在时间不允许我现学啦,渴求牛人帮忙给个大概的写法[/quote]
用awk,提取各个域,然后赋值给变量
你简单看看教材就能搞定,我有点生疏了
回复

使用道具 举报

发表于 2005-5-9 10:49:36 | 显示全部楼层
应该是这样吧:
[code:1]
# awk {print $2}
[/code:1]
这样会打印出第二个域的值,就是:
[code:1]
TRAHIS
----------
2074
[/code:1]
忘的差不多了,只能给个大概了
抱歉
回复

使用道具 举报

发表于 2005-5-9 11:18:55 | 显示全部楼层
[quote:7db2f6dcfc="atfa"]下面是一个程序的输出

[code:1]

TIME                    TRAHIS     HISBAL
------------------- ---------- ----------
2005-05-09.09:24:51       2074        870

[/code:1]

如何把2074和870提取出来保存到TRAHIS和HISBAL两个变量里面呢?[/quote]
看看这个:
[code:1]zhyfly@zhyfly:~/bash$ cat tmp TIME TRAHIS HISBAL
------------------- ---------- ----------
2005-05-09.09:24:51 2074 870

zhyfly@zhyfly:~/bash$ cat tmp|sed -n '3p'|awk '{TRAHIS=$2;HISBAL=$3;print TRAHIS,HISBAL}'
2074 870
zhyfly@zhyfly:~/bash$[/code:1]
回复

使用道具 举报

发表于 2005-5-9 11:22:23 | 显示全部楼层
还有上面的方法只能在awk内部使用,而不能直接这样提取出来,因此上述命令执行完后并不能得到这两个变量真正的值!如果你想要在awk外使用这两个变量,需要另外想办法
所以把你想要做的说的再稍微详细点,看能不能解决
第一个问题我没有搞清楚什么意思,再看看!
回复

使用道具 举报

 楼主| 发表于 2005-5-9 11:22:47 | 显示全部楼层
[code:1]TRAHIS=`./getsummary.sh  | tail -2 |head -1 | awk '{print $2}'`[/code:1]

这样写虽然有点丑陋,但是将就用吧.

谢谢楼上诸位的帮忙

下一个问题,哦,应该说第一个问题是:

我现在是用的最简单的方式来实现用户交流,就是我在屏幕上输出几行选项,然后读取用户的输入1,2,3,然后判断后执行操作,真个嘎教本是在一个大的if-else循环里面,下一步做成函数后脚本就好看一点,但是整个脚本毫无界面可言(类似于编译内核时那种make config),我希望做成make menuconfig那样的,诸位了解了吧,我知道很难,算了……
回复

使用道具 举报

 楼主| 发表于 2005-5-9 11:33:02 | 显示全部楼层
再问一个问题吧,我要在一个if里面判断
[code:1]
if [ "$TRAHIS" = "$TRAHISbak" ] AND [ "$HISBAL" = "$HISBALbak" ]; then
echo ok
fi
done
[/code:1]

说是参数过多?
应该怎么写呢?谢谢……
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-7-8 12:08 , Processed in 0.116847 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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