+ -
当前位置:首页 → 问答吧 → 怎样在命令行启动应用程序?

怎样在命令行启动应用程序?

时间:2011-05-23

来源:互联网

代码:
#!/bin/sh
awk -v NUM=$1 -v TOPNUM=$2 '
BEGIN{
function sort(ARRAY,ELEMENTS,temp,i,j) {
       for(i=2;i<=ELEMENTS;++i) {
                for(j=i;(j-1) in ARRAY && ARRAY[j-1] > ARRAY[j];--j) {
                temp=ARRAY[j]
                ARRAY[j]=ARRAY[j-1]
                ARRAY[j-1]=temp
                }
        }
}
                if(NUM <= 0)
                NUM=6
                if(TOPNUM <= 0)
                TOPNUM=30
                srand()
printf ("pick %d of %d\n",NUM,TOPNUM)
        for(x=1;x<=NUM;x++){
        do {
                select = 1 + int(rand() * TOPNUM)
        } while (select in pick)
        pick[select]=select
                }       
sort(pick, NUM)
for(j=1;j<NUM;++j)
        printf("%d ",pick[j])
        printf("\n")
}'


这是一个随机选号的脚本,现在的问题是,我自定义了一个函数用来给数字排序,但是运行脚本出错。提示awk: 命令行:2: function sort(ARRAY,ELEMENTS,temp,i,j) {
awk: 命令行:2: ^ syntax error
语法错误,我把自定义函数放在BEGIN外面,不报错,但是运行脚本没有随机选号的功能里,都是0.。大家帮我看看是函数定义错了,还是我调用函数不正确阿?

最后由 phf1102 编辑于 2011-05-23 22:01,总共编辑了 2 次

作者: phf1102   发布时间: 2011-05-23

怎么没人呢,问题肯定出在自定义sort函数上,但是不知道是定义的时候有问题,还是调用sort函数for循环出问题。

作者: phf1102   发布时间: 2011-05-23

phf1102 写道:
怎么没人呢,问题肯定出在自定义sort函数上,但是不知道是定义的时候有问题,还是调用sort函数for循环出问题。


代码不用 code 标签太难看把人都吓跑了吧?

作者: lilydjwg   发布时间: 2011-05-23

第2回发贴,不是很懂。

作者: phf1102   发布时间: 2011-05-23

啊,不知道怎么排版

作者: phf1102   发布时间: 2011-05-23

还是用 Vim 重排了下。

awk 的 function 不能写在 BEGIN 里边。你写到最开头就可以了。

作者: lilydjwg   发布时间: 2011-05-23