bash——Bourn Again Shell 是一种解释器解释执行的脚本语言,也能够实现编程功能。shell
bash变量类型:编程
本地变量:只对当前shell有效vim
局部变量:local variable 仅对局部代码有效数组
环境变量:export variable 对当前shell及其子shell有效bash
位置变量:$1,$2,$3ide
特殊变量:$#,$!,$?,$@函数
指定变量类型:declare测试
declare -i variable:声明一个整型变量ui
declare -x variable:声明一个环境变量url
declare -a variable:声明一个数组
语言控制结构:
一、顺序结构
二、选择执行
三、循环执行
bash的for循环:
for variable in Element list ;do
sentence one
sentence two
......
done
例1:写一个脚本使用for建立10个用户user1..user10,并为它们设置密码。
例2:写一个脚本,使用for循环,复制/etc/fstab、/etc/inittab、/etc/rc.d/init.d/functions文件至/tmp目录中,并重命名为原有的名称以后加当前的日期。
如何在shell脚本中进行算术运算:
写一个脚本,计算100之内全部整数的和。
判断:
if 条件;then
sentence one
sentence two
.....
else
sentence one
sentence two
.....
fi
例1:让用户输入一个用户,若是其ID号大于499就说明是普通用户,不然就说明是管理员或系统用户。
例2:写一个脚本,其能够接受三个参数,最后一个参数为文件名,但参数可变化,形如:
script.sh -a tuchao /tuchao/test1.sh
script.sh -b 2013-07-19 /tuchao/test1.sh
script.sh -c 'some infomation' /tuchao/test1.sh
此脚本可以建立/magedu.com/scripts/test1.sh文件,而且,若是给出了-a MageEdu,则文件前两行为:
#!/bin/bash
# Author: MageEdu
若是给出了-d 2013-07-19,则文件前两行为:
#!/bin/bash
# Date: 2013-07-19
若是给出了-D "some infomation",则文件前两行为:
#!/bin/bash
# Description: some infomation
其它任何参数,均提示错误并退出;
若是没有退出,则使用vim打开此文件,并使用光标默认处于最后一行;
保存退出后,若是文件有语法错误提示用户有错误;
若是没有语法错误,则给些文件赋予执行权限;
bash编程之case:
case variable in
value1 )
;;
value2)
;;
value3)
;;
* )
esac
例:写一个脚本:能够接受一个参数,其使用形式以下:
sevtest.sh {start|stop|restart|status}
若是参数为start,且/var/lock/subsys/sevtest文件不存在,则建立空文件/var/lock/subsys/sevtest,并显示“Starting Server successfully.”;不然,显示“Server is already running.”
若是参数为stop,且/var/lock/subsys/sevtest文件存在,则删除文件/var/lock/subsys/sevtest,并显示“Stop Server finished.”;不然,显示“Server is stopped yet.”
若是参数为restart,则删除文件/var/lock/subsys/sevtest后从新建立,并显示“Restarting Server successfully.”;
若是参数为status,那么:
若是/var/lock/subsys/Server文件存在,则显示为“Server is running.”
不然,则显示为“Server is stopped.”
其它任何参数:则显示“sevtest.sh {start|stop|restart|status}”
再来一个例子?
例2:写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘建立分区:
一、列出当前系统上全部的磁盘,让用户选择,若是选择quit则退出脚本;若是用户选择错误,就让用户从新选择;
二、当用户选择后,提醒用户确认接下来的操做可能会损坏数据,并请用户确认;若是用户选择y就继续,n就退出;不然,让用户从新选择;
三、抹除那块硬盘上的全部分区(提示,抹除全部分区后执行sync命令,并让脚本睡眠3秒钟后再分区);并为其建立三个主分区,第一个为20M,第二个为512M, 第三个为128M,且第三个为swap分区类型;
bash编程之函数,结构化编程:
写一个脚本,完成如下功能:
说明:此脚本能于同一个repo文件中建立多个Yum源的指向;
一、接受一个文件名作为参数,此文件存放至/etc/yum.repos.d目录中,且文件名以.repo为后缀;要求,此文件不能事先存,不然,报错;
二、在脚本中,提醒用户输入repo id;若是为quit,则退出脚本;不然,继续完成下面的步骤;
三、repo name以及baseurl的路径,然后以repo文件的格式将其保存至指定的文件中;
四、enabled默认为1,而gpgcheck默认设定为0;
五、此脚本会循环执行屡次,除非用户为repo id指定为quit;
终于写完了,bash的内容有点多。 以上代码都是小菜手写测试截图。
有问题欢迎与我交流QQ:1183710107