linux shell 编程笔记 getopts sed 正则表达式 shift

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行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。


sed基本语法:sed '样式' 文件
样式中,使用// 代表寻找,比如1,5代表第一到第五行,/aaa/,/bbb/ 表示作用范围从aaa的行到bbb的行。
例子:
sed '1,4d' file 指的是把第一到第四行删除。

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的命令



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值