=================================批量跨机器拷贝数据

for i in `find /data/zabbix -name "*.sh"`;do sudo scp $i
==============================
cut -c 1-3  截取字符
=============批量更改文件名:把finished去掉
stu_102999_1_finished.jpg
stu_102999_2_finished.jpg
stu_102999_3_finished.jpg
stu_102999_4_finished.jpg
stu_102999_5_finished.jpg

脚本:for i in `ls *.jpg`;do mv $i `echo ${i%.jpg*}.JPG`;done

=============================把jpg换成大写JPG
=====================rename 要改的部门 改成的部分 文件
rename 批量改名;
rename .JPG .htm *.JPG
==========================变量的替换
----------------${value:-word}
result=${test:-UNSET}
当test 没有被定义的时候就会返回后面的UNSET
当test有内容时,echo $resule 返回为定义的test
意义:这个变量的功能可以用来判断变量是否定义。防止变量没有定义,但不会给变量赋值
----------------${value:=word}
result=${test:=UNSET}
意义:确保变量始终有值,变量没定义就赋值,变量有值就直接输出。
----------------${value-world}
变量不存在,用world替代。
===============================sh -x *.sh   追踪脚本执行的过程。
===========================rm -fr $PATH  一定要小心,如果PATH 没有被定义默认会删除当前目录。。。***************
find${path:/tmp/} -name "*.tar.gz" -type f|xargs rm -f   这样可以放在$path 没有被定义。。。。
================================================================================================
计算变量长度的不同方法及不同方法的耗时对比

计算字符串的长度:

char=`seq -s "" 100`
1、echo ${#char}
2、echo $char|wc -m  比真实的多一个字符串(计算了回车)
3、echo $(expr length "$char")
===========================比较不同的脚本耗时
1、time for i in `seq -s " " 11111`;do count=${#i};done
real    0m14.763s
user    0m2.778s
sys     0m11.818s
2、time for i in $(seq 11111);do count=`echo $i|wc -m`;done
real    0m11.952s
user    0m2.627s
sys     0m9.254s
3、time for i in $(seq 11111);do count=$(expr length "$char");done
real    0m5.550s
user    0m1.494s
sys     0m3.958s
========================