Shell学习笔记

有一个问题需要约定一下,凡是自定义的脚本建议放到/usr/local/sbin/目录下,这样做的目的是,一来可以更好的管理文档;二来以后接管你的管理员都知道自定义脚本放在哪里,方便维护。

Shell脚本通常都是以.sh 为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。

sh中第一行一定是 “#! /bin/bash” 它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。

Shell脚本的执行很简单,直接”sh filename “ 即可,另外你还可以这样执行, 先设定:
#sudo chmod +x test.sh
#./test.sh
默认我们用vim编辑的文档是不带有执行权限的,所以需要加一个执行权限,那样就可以直接使用’./filename’ 执行这个脚本了。另外使用sh命令去执行一个shell脚本的时候是可以加-x选项来查看这个脚本执行过程的,这样有利于我们调试这个脚本哪里出了问题。
比如:#sh -x test.sh

date的格式:%Y表示年,%m表示月,%d表示日期,%H表示小时,%M表示分钟,%S表示秒,-d 选项也是经常要用到的,它可以打印n天前或者n天后的日期,当然也可以打印n个月/年前或者后的日期。
%Y表示四位数年的值,%y表示后面两位时的年值;
#date “+%Y%m%d” —->20130503
#date “+%Y” —–>output:2013
#date -d “-1 month” “+%Y%m%d”  —>output:20130403
#date -d “+1 day” “+%Y%m%d”  —>output:20130504

单引号:当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符
双引号:作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
反引号:命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(…)结构括起来,其中,$(…)格式受到POSIX标准支持,也利于嵌套。
反斜杠:一般用作转义字符,或称逃脱字符,linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号。
反引号和$()的功能是命令替换,将反引号或$()中的字符串做为命令来执行,我们在用shell编程时经常用的到 将系统命令的执行结果赋给一个变量,但反引号内不能再引用反引号,而$()中可以引用反引号。

变量几个注意的地方
定义变量的格式为 “变量名=变量的值”。
赋值的等号前后不能有空格。
当在脚本中引用变量时需要加上’$’符号。
d=”asdfasdfadf”
echo “asadf $d”

数学计算:
a=1
b=2
sum=$[$a+$b]
echo $sum
数学计算要用’[ ]’括起来并且外头要带一个’$’。

互交: