shell编程
sh -x :显示脚本的执行过程
shell编程之局部变量
局部变量:只在shell脚本中生效
命名规则:必须以字母或下划线开头(字母、数字、下划线组成)
驼峰语法:首个单词小写,其余单词首字母
shell编程之环境变量(全局变量)
环境变量:大写,在任意地方都可以使用,如$PS1,$LANG,$PATH
查看系统中所有环境变量:env
环境变量分为两类:bash内置的环境变量与自定义环境变量
自定义环境变量:export 命令,如exprot ABC=AAA
取消变量:unset 变量名
永久生效:将定义的变量名追加到/etc/profile中
与环境变量相关的文件
/etc/profile:全局配置文件
/etc/bashrc:全局别名配置文件
/etc/profile.d:用户登陆系统时会运行这个目录的脚本
~/.bash_profile:用户配置文件
~/.bashrc:用户别名配置文件
shell编程之特殊变量
$0:表示脚本的名字
$1:表示脚本中的第一个参数
$2:表示脚本中的第二个参数
$n:表示脚本中的第N个参数
$#:表示脚本中共有几个参数
$?:表示上一个命令有没有执行成功,0表示执行成功,非0表示执行失败
read:表示交互式输出
-p:在屏幕提示输出语名
-s:关闭回显,用于密码输出
-t:等待时间,多少秒之后出退
shell编程之测试语句
#-f:表示文件,-d:表示目录
[root@web02 files]# [ -f /etc/hosts ]
[root@web02 files]# echo $?
0
[root@web02 files]# [ -d /etc/aaa ]
[root@web02 files]# echo $?
1
shell编程之if语句
-gt:大于 >
-lt:小于 <
-ne:不等于 !=
-eq:等于 ==
-le:小于等于 <=
-ge:大于等于 >=
#语法
#单分支
if [ 条件 ];then
命令
fi
#双分支
if [条件];then
....
else
....
fi
#多公支
if [条件];then
命令
elif
命令
else
命令
fi
例子:判断脚本的参数个数不是2就退出
#!/bin/bash
#x=$1
#y=$2
if [ $# -ne 2 ];then
echo "Usge:需要两个参数"
exit
fi
shell编程之for循环
#语法
for 变量名字 in 列表
do
命令
done
#例子:优化linux开机启动项目,只保留crond;sshd;network;rsyslog;sysstat,其他的都关闭
#!/bin/bash
stat_name=`chkconfig |grep -v 'crond|ssdh|network|rsyslog|sysstat'|awk '{print $1}'`
for name in $stat_name
do
chkconfig $name on
done
#例子2:批量添加用户并设置随机密码
#!/bin/bash
user=`seq -f "s%02g" 10`
for username in $user
do
password=`echo $RANDOM |md5sum|cut -c 1-8`
useradd $username
echo $username $password >> a.txt
echo $password |passwd --stdin $username
done