【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}
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}
相关文章推荐
- Shell编程技巧总结
- Shell编程入门总结(bash相关命令篇)
- shell脚本编程部分技巧总结
- Shell 相关技巧的总结应用(1)
- [置顶] 与位运算相关的编程算法技巧的总结java实现
- shell编程基础-总结
- 技海无涯:正则表达式相关的知识和技术(3)——编程技巧:堆栈的本质探讨
- 一些简单编程技巧的总结(一)
- HttpWebRequest编程相关问题阶段总结
- linux socket编程相关知识的总结
- VC 编程技巧总结
- 脚本文件(shell perl python)编程的总结的框架。
- 总结两个Javascript的哈稀对象的一些编程技巧
- 工作相关技巧总结贴
- Symbian编程总结-文件、流与数据库-文件系统及相关API
- 关于socket编程相关知识点总结
- vc编程技巧总结
- Symbian编程总结-网络与通信-套接字(1)-套接字体系结构与相关API
- vc编程技巧总结
- 总结两个Javascript的哈稀对象的一些编程技巧