shell简单使用

最近需要用到shell脚本实现关机保护作用,总结下语法

要点:

       1、linux下编写的shell脚本不能在window下编写,否则会出现^M的错误,用window编写保存,在linux用vim打开,每行的最后一个会出现^M

       原因:对回车键判定不一致,window是\r\n,unix是\r,    用ultraedit打开会提示用dos格式还是unix格式,用此软件打开不会存在这种情况。

       2、对字符串进行判断是否为空,在变量加双引号""

tmp=`ps | grep "ups_netcomm"`                                                   
if [ ! -z "$tmp" ]; then                                                        
  pid=`ps | grep "ups_netcomm" | awk '{print $1}' `                             
  echo "the process ups_netcomm is running, kill ups_netcomm process pid:$pid"  
  kill -9 $pid                                                                  
fi           

  3、awk 进行一定规律的文本分析,例如 ps -aux | awk '{print $1}' , 而sed用于查找替代文件内容

  4、sh与bash不一样, sh是bash的子集,sh是posix标准, 通用于任何符合posxi标准

   shell常用命令:  http://segmentfault.com/a/1190000002924882#articleHeader3

 

 5、 bash里  return 的返回值只能为整数

       获取函数的字符串返回值的方法

         

function unzipPackage()  
{   
    echo "test"
}


 result=`unzipPackage  "$guardUUID" "$fileDate"`

   获取函数的retrun的返回值

function unzipPackage()  
{   
    return 12
}

 unzipPackage  $guardUUID $fileDate
 result=`echo $?`

 

php 在使用  $last_line = exec("./bash.sh",  $output, $ret);   其中的$ret 是 bash.sh的 return的值, $last_line 是bash.sh的echo 的值

 

 统计行数:

find . -name "*.[c|h]"|xargs cat|grep -v ^$|wc -l

   

[ $enabled = 0 ] && return

 

6、if else 的判断语句的替换

[ $switch2 == 0 ] && switch2=1 || switch2=0

 

7、判断变量不为空的字符串执行, 如果UCI_CONFIG_DIR不为空则执行后续内容

/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} commit $PACKAGE

 

posted @ 2015-09-28 14:54  cogitoergosum  阅读(136)  评论(0编辑  收藏  举报