shell脚本,请求解释
#!/bin/csh
# EndM5
# Do a proper end and shutdown of Mark5A or $1, if any
# Revised: 2002 January 25, JAB
#
if ( "$1" == "" ) then
set name = Mark5A
else
set name = "$1"
endif
set tst = ` ps -ax | grep -E -v "grep|$0:t" | grep $name `
if ( ${#tst} > 0 ) then
echo "$0:t sending INTERRUPT to $name $tst[1] "
kill -INT $tst[1]
else
echo "${0:t} ERROR: Can't find program $name "
exit ( -1 )
endif
问题点数:0、回复次数:12Top
1 楼liaomingxue()回复于 2004-09-03 23:59:50 得分 0
真的很难?Top
2 楼pacman2000(pacman)(影子传说)回复于 2004-09-04 09:41:54 得分 0
就是把一个进程砍掉啊。
默认是给Mark5A发SIGINT信号。Top
3 楼tengulre(debian core developer)回复于 2004-09-04 11:24:24 得分 0
UPTop
4 楼liaomingxue()回复于 2004-09-04 11:55:48 得分 0
关键是: tst = ` ps -ax | grep -E -v "grep|$0:t" | grep $name `这一句
其实我连if ( ${#tst} > 0 )
echo "${0:t} ERROR: Can't find program $name "
也不懂
1999年写过shell程序,怎么感觉从来没有用这些东西?Top
5 楼mamali()回复于 2004-09-04 17:04:52 得分 0
shell程序
就是Linux下的编程吗?Top
6 楼liuhking(虎虎虎)回复于 2004-09-04 17:34:45 得分 0
发出一个中断请求!!!!!!!!!!!Top
7 楼baga(八嘎)回复于 2004-09-04 21:54:23 得分 0
tst = ` ps -ax | grep -E -v "grep|$0:t" | grep $name `
的意思是说列出所有进程,匹配你运行这个程序的进程和匹配Mark5A 进程Top
8 楼flaireyes(口木爪厶)回复于 2004-09-04 22:32:34 得分 0
if ( ${#tst} > 0 )
就是判断tst里有没内容,大于0就是找到那个程序了
前面$1内容是从第一个命令行里传进来的。Top
9 楼liaomingxue()回复于 2004-09-05 10:25:59 得分 0
grep -E -v "grep|$0:t"中的后面的正则式,是什么意思呢?特别是$0:tTop
10 楼wangguoqin1001(王国钦)回复于 2004-09-06 10:55:39 得分 0
grep|$0 很好解释,该程序运行的时候会出现一个grep的进程和一个程序本身($0)的进程,而这两项是要排除在外的。但:t是什么意思我弄不懂。Top
11 楼liaomingxue()回复于 2004-09-08 13:08:34 得分 0
看来外国老确实比我们聪明。
程序是一个美国天文专家写的软件中的一部分。Top
12 楼wangguoqin1001(王国钦)回复于 2004-09-11 18:47:49 得分 0
这么一个问题就看出某个国家人聪明与否啦?随便找本有介绍正则表达式的书看看就可以了。Top




