1、算式计算
(1)expr 对象必须是数字
a=1
b=2
c=`expr $a + $b`
乘法需要转义 即 c=`expr $a \* $b`
(2)$(()) 乘法不需要转义
c=$((a+b))
2、getopts函数接受参数
while getopts vly: ARGS //y:表示y后面需要接参数
do
case $ARGS in
v)
echo `uname -r`;;
l)
echo `ls` ;;
y)
echo y
thr=$OPTARG
echo "thr=$thr" ;;
*)
echo "input is err"
esac
done
在终端执行 ./myshell.sh -v -y 123
3、shift shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)
比如
echo "$1"
shift
echo "$1"
执行 ./myshell.sh 1 2 3
输出
1
2
从上可知 shift(shift 1) 命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。
也可以shift n 表示一次性丢掉n各参数
4、
登陆数据库 mysql -u root -p密码 //-p后面不能有空格,直接接密码
shell 脚本中执行数据库mysql操作
使用 mysql -e 参数可以执行各种 sql 的各种操作语句。不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法
比如 mysql -u root -p123 -e "show databases" 则直接执行show database 操作而不用进入mysql环境下
5、sed命令 http://www.cnblogs.com/jankie/archive/2012/01/06/2314478.html (正则表达式和sed命令 详解)
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。
6、备份数据库mysqldump http://blog.youkuaiyun.com/u010587433/article/details/47417051
-A -B
通常情况,mysqldump将命令行中的第1个名字参量看作数据库名,后面的名看作表名。使用该选项,它将所有名字参量看作数据库名
(1)-A
备份所有库,并在备份文件中生成创建库的语句及use语句。这样方便恢复时不用创建指定数据库。
(2)-B
此参数用于指定多个数据库,同-A参数,生成创建库的语句及use语句
比如
mysqldump -u root -p123 -B abc hig > mysql_B.sql 将abc hig两个数据库备份到mysql_B.sql 中
(3)
不指定上述参数
默认第一个选项为数据库名,如果有第二个及更多选项则为表名
比如mysqldump -u root -p123 phf phf_table >mytable`date +%Y-%m-%d`
将数据库phf 里的表phf_table 备份到。。。中
7、shell中输出日期的命令
date
var=`date +%Y%m%d` 尼玛date和+中间有一个空格 一定要记得 不然会提示没有date未找到的命令。
8、awk http://www.centoscn.com/shell/2013/0802/884.html
awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。
.工作原理:
awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。
(1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里
(2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100)
(3)输出的时候按照内置变量OFS(out FS),输出
(4)读入下一行继续操作
awk 主要是处理『每一行的栏位内的数据』,而默认的『栏位的分隔符号为 "空白键" 或 "[tab]键"比如:
echo this is a book>awk.txt
awk '{print $2,$1,$3,$4}' awk.txt
输出 is this a book
9、history 最近使用的命令
history 5 最近使用的5个命令
!5执行历史编号为5的命令