您的位置:首页 > 运维架构 > Shell

【shell】相关编程技巧点和常规总结

2014-07-05 16:31 281 查看
1.  常量大写,多个名词之间用下划线分隔。eg CUR_DATE=xxx
2.  获取当前日期的前一天:DATE = `date -d "1 day ago" + "%Y%m%d"`
3.  ${X}代表取X的值
4. # 注释
5. 双引号对于$仍保留其取值的特性,单引号对所引内的东西都当作字符来处理。
\"代表转义,字符为转义后的字符。
6. 可以把一些常规配置放到一个conf文件中,然后在别的shell文件中引入该文件,命令
source x.conf
7. shell定义函数,eg:
log(){
    xxx

}
8. 局部变量用local声明,eg: local a = 1
9. if/else用法
if [ condition ]; then 
....
else
    ...

fi
注意:在if 后的条件里 空格,分号,then,另起一行,结尾要用 fi 结尾

常见的 
if [ condition ]; then
xxx
fi

if [ condition ];then
xxx
else
xxx
fi

if [ condition ];then
xxx
elif
xxx
fi
 
10. eval用法
重新运算计算出参数内容
eg:
test.txt 内容“hello,world”
myfile = "cat test.txt"
echo $myfile------------> cat test.txt
eval echo $myfile------> hello,world

eval : 说白了就是再次执行命令行处理

11. $(cmd)
等价于 `cmd`
返回cmd的执行结果

12. 条件
[  A -a B] :A\B同时满足
[ A -o B] : A\B只要满足一个
[ !A ] : 非

13. if [ -z A ]
判断字符串A是否为空

14. 将字符串date转化为秒
SUM_DATE_SECONDS=`date  --date=${SUM_DATE} +%s`

15. 得到当前的时间戳
CURRENT_TIMESTAMP=$(date +%Y%m%d%H%M%S) 

16. 字符串拼接
A=B.pdf
将.pdf拼接在B后面赋给A

17. mkidr -p /a/b
如果a不存在则递归地创建a/b目录
如果a存在则直接忽略,创建b目录

18. wget命令
wget -c:断点续传
-T 20 : 20s超时
-t 5: 尝试5次

19.计算一个文件的md5
LOCAL_MD5SUM=`md5sum ${SUM_DATE}.add | awk '{if( NR == 1){print $1}}'`
SOURCE_MD5SUM=`awk '{if(NR==1){print $1}}'` ${SUM_DATE}.add.md5

if [ "${LOCAL_MD5SUM}" != "${SOURCE_MD5SUM}"]; then
    log

20. 判断字符比较
if [ "a" = "b" ] 或 if[ "a" == "b" ]
不相等
if [ "a" != "b" ]

if [[ "a" == "z*" ]]
==在[]和[[ ]]情况下是不同的含义,后者进行模式匹配

大于小于的比较一般用 [[   ]]否则,用[ ]要进行转义

21. 整数比较
-eq       等于,如:if [ "$a" -eq "$b" ] 
-ne       不等于,如:if [ "$a" -ne "$b" ] 
-gt       大于,如:if [ "$a" -gt "$b" ] 
-ge       大于等于,如:if [ "$a" -ge "$b" ] 
-lt       小于,如:if [ "$a" -lt "$b" ] 
-le       小于等于,如:if [ "$a" -le "$b" ] 
<       小于(需要双括号),如:(("$a" < "$b")) 
<=       小于等于(需要双括号),如:(("$a" <= "$b")) 
>       大于(需要双括号),如:(("$a" > "$b")) 
>=       大于等于(需要双括号),如:(("$a" >= "$b")) 


22. shell可以直接执行sql对mysql数据库进行操作
sql = "delete from xx where y ";
${MYSQL_PATH} -u${USER} -h${DB_IP} -P${DB_PORT} -p${DB_PASSWORD} -D${DB_NAME} -e "$1"

23. 
$?: 返回值
$#: 参数个数
$@: 所有参数

24. 
truncate table_name;// 清空表内数据

25.
将文本文件中的内容灌进数据库
(
echo '
insert into table_name(x) values '
cat filename | awk -v param=XX 
{
    addComma=""

    if(NR>1){addComma=","}

    print "\t" addComma "(" $1 “)”

} END {
    print "\t;"

}
} '
) > ${SQL_FILE_PATH}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: