当前位置 博文首页 > Tina_ZHOU3的博客:学习笔记:Shell脚本-2015-08-05
参考文档 :http://www.92csz.com/study/linux/14.htm
以下为精简版======================================================================================================================================
Shell脚本----首先它是一个脚本,并不能作为正式的编程语言。说白了,shell脚本就是一些命令的集合。
Shell脚本通常都是以.sh?为后缀名的。test.sh中第一行一定是?“#! /bin/bash”?它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。’#’表示注释,在前面讲过的。
Shell脚本的执行很简单,直接”sh filename “?即可,另外你还可以这样执行:" . / filename.sh ", 但是默认我们用vim编辑的文档是不带有执行权限的,所以需要加一个执行权限“chmod +x filename.sh”,那样就可以直接使用’./filename.sh’?执行这个脚本了。
给变量赋值时用到反引号。’d’和’d1’在脚本中作为变量出现,定义变量的格式为?“变量名=变量的值”(d=` dfafdfdf `)。当在脚本中引用变量时需要加上’$’符号(echo " the script begin at $d "),这跟前面讲的在shell中自定义变量是一致的。
Shell脚本还可以和用户交互。
read -p?选项类似echo的作用。
你有没有用过这样的命令”/etc/init.d/iptables restart “?前面的/etc/init.d/iptables?文件其实就是一个shell脚本,为什么后面可以跟一个”restart”??这里就涉及到了shell脚本的预设变量。实际上,shell脚本在执行的时候后边是可以跟变量的,而且还可以跟多个。
如果你学过C或者其他语言,相信你不会对if?陌生,在shell脚本中我们同样可以使用if逻辑判断。在shell中if判断的基本语法为:
1)不带else
if??判断语句; then
command
fi
在if1.sh中出现了?((a<60))这样的形式,这是shell脚本中特有的格式,用一个小括号或者不用都会报错,请记住这个格式,即可。
2)带有else
if??判断语句?; then
command
else?
command
fi
以上只是简单的介绍了if语句的结构。在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”。但是就不能使用>, < , =?这样的符号了,要使用?-lt?(小于),-gt?(大于),-le?(小于等于),-ge?(大于等于),-eq?(等于),-ne?(不等于)。
shell?脚本中if还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有读写执行权限等。常用的也就几个选项:
-e?:判断文件或目录是否存在
-d?:判断是不是目录,并是否存在
-f?:判断是否是普通文件,并存在
-r?:判断文档是否有读权限
-w?:判断是否有写权限
-x?:判断是否可执行
使用if判断时,具体格式为:?if [ -e filename ] ; then
【shell脚本中的循环】
Shell脚本中也算是一门简易的编程语言了,当然循环是不能缺少的。常用到的循环有for循环和while循环。下面就分别介绍一下两种循环的结构。
通过这个脚本就可以看到for循环的基本结构?:
for?变量名?in?循环的条件;?do
command
done
【shell脚本中的函数】
fun.sh?中的sum()?为自定义的函数,在shell脚本中要用
function?函数名() {?
command?
}
在shell脚本中,函数一定要写在最前面,不能出现在中间或者最后,因为函数是要被调用的,如果还没有出现就被调用,肯定是会出错的。
上个脚本执行过程如下: