生成1000以内的500个随机数
gawk 'BEGIN {srand(); for (i = 1; i <= 500; i++) print int(1000*rand())}'
#计算指定日期,查找指定路径文件的大小
#!/bin/bash if [ $# -ne 1 ] then echo "Usage: total DATE" exit fi TERA=/tera02 NAME1=(adlantis adlantis_mobile) NAME2=(ad click conv) DIR1=("lb05?" "lb06?") #target dir DATA1=$1 find_du () { find /$TERA/$1/$2/$3 -type f -regex ".*"$DATA1"_.*" -exec du -s {} \;|awk '{ sum+=$1}; END{print sum}' } for i in ${NAME1[@]} do for j in ${NAME2[@]} do for k in ${DIR1[@]} do echo -ne "$TERA->$k->$i->$j =" find_du $k $i $j done done done
[元素的添加、删除] 删除数组中元素: 该方法适用于bash、ksh,不支持csh。 unset varname[5] 关于数组中元素的值的清除,即置空: bash和ksh下这样操作,不支持csh varname[5]= #清除数组varname中的第六个元素 关于数组的清除: 适用于bash、ksh、csh等大部分shell。 unset varname 向数组中添加元素: 方法一、二只适用于bash、ksh,不适用于csh; 方法一: varname=(${varname[*]} varn-1 varn varn+1) 方法二: varname[${#varname[*]}]=varn 方法三: 是csh特有的。 set varname=($varname varn+1 varn+2) #或者$varname用${varname[*]}替换。
find . -name *200908*_* -print0 |xargs -0 cp -aRv --parents --target-directory=/mnt/usb030c/lb05a.200908b/
###应用例 declare -a LBSERVER for i in {a..f} do LBSERVER[${#LBSERVER[@]}]=server01`printf "$i"` done
判断变量是否为1位数字
read a;$[[ $a = [[:digit:]] ]] && echo OK ||echo ERROR
判断字符串是否全数字
read str; [[ $str == *[!0-9]* ]] && echo $str is string || echo $str is digit
| $0 | shell或shell脚本的名字 |
| $* | 以一对双引号给出参数列表 |
| $@ | 将各个参数分别加双引号返回 |
| $# | 参数的个数 |
| $_ | 代表上一个命令的最后一个参数 |
| $$ | 代表所在命令的PID |
| $! | 代表最后执行的后台命令的PID |
| $? | 代表上一个命令执行后的退出状态 |