Uninote
Uninote
用户根目录
__import__
network
undefined

转自:http://blog.csdn.net/binyao02123202/article/details/8112025

 
  最近正在忙于开发豆瓣数据同步,主要原因是豆瓣接口不给力,超过一定的访问量就抓不到它的数据。所以决定把豆瓣的数据导入到本地服务器,然后使用我们自己的数据。
 
  导入数据的脚本我已经开发完了。现在就剩下命令行调用了。今天我就专门研究了下shell的应用,我把我的思考过程写一下。
 
准备
 
 这是要使用的php测试脚本(并不是我的线上代码,只是一个样例)。
复制代码
<?php
if ($_SERVER['argc'] < 2) {
    echo "调用不正确!\n";
    echo "调用方式:";
    echo "php {$_SERVER['argv'][0]} { rsync_show  | rsync_show_by_id 1231123 | rsync_douban }\n";
    exit(-1);
}

function rsync_show() {
    echo "调用节目数据\n";
}

function rsync_show_by_id($id) {
    if(empty($id)){
        echo "缺少参数...\n";
        exit(-1);
    }
    echo "根据指定ID开始导入节目数据\n";
}

function rsync_douban() {
    echo "调用豆瓣数据层\n";
}


foreach ($_SERVER['argv'] as $k => $v) {
    if($k == 0)  continue;

    if($v == 'rsync_show_by_id'){
        call_user_func($v, $_SERVER['argv'][2]);
        break;
    }else{
        call_user_func($v);
    }
}

exit(0);
复制代码

查看几个调用结果

                                     错误1

                                     错误2

                                     正确的调用方式

 

                                     通过crontab -e设置个定时执行脚本

 

 

 

 
shell 脚本
 
1、开始使用shell脚本编程

                                     运行脚本

 

2、添加一个停止脚本

 

 

3、函数整理

 

shell 查漏补缺
 
 
 
两大问题:
  1、是不是再写一个方法?
  2、怎么传参啊?

 第一个问题,直接用start方法就行了,没必要再写一个方法!——多写一个方法是要付出代价的。

第二个问题怎么解决,我忽然想到在我们安装开源软件的时候喜欢这么用,如下图  

 所以我决定也使用类似的方法作为参数传递之用。

具体看我下面的方法调用啊!

                                     运行脚本

 重点

  1、函数调用

    start $2    # 这是函数 + 参数

    函数中的 $1表示第一个参数!

  2、字符截取

    ${1:2:2} 表示把$1这个变量里的值从第2个(下标是从0开始的)下标开始,截取2个长度的字符。

    ID=${1#--id=}表示从$1这个变量开头删除最近匹配--id=的子串。

 

                                       放入crontab中

 

我在php的源代码中的configure中发现了一个不错的输出字符的方法,与大家分享

                                       运行效果

 

 

总结
 
  这就是我今天收获的一些东西,shell我也不是很精通。如果大家有更好的建议,希望告知一、二。

推荐
 

 


linux下vi命令大全

test

点赞(0) 阅读(63) 举报
目录
标题