您的位置:首页 > 运维架构 > Shell

学习笔记:Shell脚本-2015-08-05

2015-08-05 11:20 507 查看
参考文档 :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 脚本中,除了用if来判断逻辑外,还有一种常用的方式,那就是case了。

【shell脚本中的循环
Shell脚本中也算是一门简易的编程语言了,当然循环是不能缺少的。常用到的循环有for循环和while循环。下面就分别介绍一下两种循环的结构。
通过这个脚本就可以看到for循环的基本结构 :
for 变量名 in 循环的条件; do
command
done



【shell脚本中的函数

fun.sh 中的sum() 为自定义的函数,在shell脚本中要用
function 函数名() {
command
}



在shell脚本中,函数一定要写在最前面,不能出现在中间或者最后,因为函数是要被调用的,如果还没有出现就被调用,肯定是会出错的。

上个脚本执行过程如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: