shell平时用的上的一些脚本

来源:互联网 发布:linux删除用户附加组 编辑:程序博客网 时间:2024/05/19 12:12

1、shell里统计字符串长度

 设shell变量

 var=hello

 有哪些方法计算$var的长度呢,下面提供几种常用方法:

 1 ${#var}

 2 expr length $var 或者 expr $var : ./* 或者expr match $var  .*

 3 awk 'BEGIN {print length("'$var'")}'

 4 echo -n $var | wc -c

 

2、shell里的数组

 Bash中还可以使用数组变量,其赋值有两种:

 (1) name = (value1 ... valuen) 此时下标从0开始

 (2) name[index] = value

 数组下标的范围没有任何限制,同时也不必使用连续的分量.

 --------------------------------------------------------------------------------

 $ A=(a b c def)

 ==================================================

 $ echo ${A[@]}         //取全部元素

 a b c def

 =================================================

 $ echo ${A[0]}        //取第一个元素

 a

 =================================================

 //取得数组元素的个数

 $ echo ${#A[@]}

 4

 $ echo ${#A[*]}

 4

 $ echo ${#A[3]}    //取得元素3的长度

 $

 ==================================================

 $ A[3]=yaoshuyin   //将第三个元素重新赋值

 $ echo ${A[@]}

 a b c yaoshuyin

 =================================================

 //清除变量

 $ unset A

 $ echo ${A[@]}

 $

 ==================================================

 //清空变量,即将值变为空

 $ A=

 $ echo ${A[@]}

 $

 ==================================================

   #清理一个月前log的脚本

 

3、for、while、if、case的使用

 (1) for的例子

  for user in $(cut -d: -f1 $FILENAME)

  do

       echo $user

  done

 (2) while的例子

  

  ////////////////////////////

 

 (3) if的例子

  if [ $WRONG_NUM -ge 20 -o $WRONG_NUM -lt -10 ];then

   (4) case的例子

   

       RAND=`expr $RANDOM % 3`

       case "$RAND" in

       0)

           ret=`expr index "$1" "$2"`

           ;;

       1)

           ret=`echo $1 $2 | awk '{print index($1, $2)}'`

           ;;

       *)

           ret=`expr index "$1" "$2"`

           ;;

       esac

4、 常用

 (1)crontab里的脚本加上如下的环境变量,避免crontab执行时找不到变量

 PATH=/usr/local/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin:$PATH;

 export PATH

 (2)

 ARGC="$#"                     #命令行参数个数

 ARGV="$*"                     #命令行参数列表

 RUN_HOME=`dirname $0`         #脚本所在路径

 INDEX=`expr $RANDOM % 10`;

 

 (3)

 Ctrl + a - Jump to the start of the line

 Ctrl + e - Jump to the end of the line

 Ctrl + u - Delete backward from cursor // 密码输入错误的时候比较有用

 (4)导入crontab

 {crontab -l; echo "* * * * *" /path/to/mon.sh; } | crontab -

 

5、处理数据库

6、awk相关

  (1) 将shell的变量传递给awk

      awk -v var=$SHELL_VAR '{ print var;}'

 

 

7、要注意变量为空的情况,经常会发生“在异常情况下,变量为空,导致脚本报错”

 

原创粉丝点击