理解shell的作用及分类
设置和使用shell变量
编写简单的shell脚本
熟悉条件测试的应用
使用if条件语句
使用for.while循环语句
使用case分支语句
了解其它控制语句及函数
cat /etc/shells
cat /etc/passwd
/bin/sh
定义新的变量
变量名要以英文字母或下划线开头,区分大小写
格式:变量名=变量值
查看变量的值
格式:echo $变量名
DAY=Monday
echo $DAY
Monday
从键盘输入内容为变量赋值
格式:read 【-p "信息”】 变量名
双引号“” 允许通过$符号引用其他变量值
单引号 '' 禁止引用其他变量值,$视为变通字符
反撇号 `` 将命令执行的结果输出给变量
设置变量的作用范围
格式: export 变量名...
export 变名=变量值【变量名n=变量值】
清除用户定义的变量
格式: unset 变量名
SRV=srv.xapc.com.cn
echo $SVR
export SRV
环境变量配置文件
全局配置文件 /etc/profile
用户配置文件 ~/.bash_profile
查看环境变量 set
常见的环境变量:
$USER $LOGNAME
$UID $SHELL $HOME
$PWD $PATH
$PS1 PS2
echo $PATH
PATH="/opt/bin:$PATH"
echo $PATH
位置变量
表示为$n,n为1-9之间的数字。
./test1 one two
预定义变量表示形式如下
$#:命令行中位置参数的个数
$*:所有位置参数的内容
$?:上一条命令执行后返回的状态,当返回状态值时表示执行正常,非0值表示执行异常或出错。
$$:当前所在进程的进程号
$!:后台运行的最后一个进程号
$0:当前执行的进程/程序名
编写可执行shell脚本
运行环境设置:#!/bin/bash
注释信息
命令
运行shell脚本三种方式
直接执行具有X权限
例如:./boot.sh
使用指定的解释器程序执行脚本内容
例如:bash boot.sh 、sh boot.sh
通过source命令(或.)读取脚本内容执行
例如:source boot.sh 或.boot.sh
条件测试
格式1:test 条件表达式
格式2:【条件表达式】常
[操作符 文件或目录】
-d:是否目录
-e:是否存在
-f:是否为文件
-r:当前用户是否有读权限
-w:当前用户是否有写权限
-x:当前用户是否有执行权限
-L:是否是Link文件
整数比较
格式【整数1 操作符 整数2】
-eq:= equal
-ne:bu = not equal
-gt:> Greater than
-lt:< lesser than
-le:<= lesser or equal
-ge:>= greater or equal
字符串比较
格式【字符串1 = 字符串2】相同
【字符串1 != 字符串2】不同
【-z 字符串】为空
【LANG !=“en.US"] && echo $LANG
zh_CN.UTF-8
逻辑测试
格式:【表达式1】操作符【表达式2】。。
常用的测试操作符
-a或&&:逻辑与,“而且”的意思
前后两个表达式都成立时
-o或||:逻辑或,‘或者’
前后两个表达式只要一个成立
!:逻辑否
当指定的条件不成立时,返回结果为真
分支判断
if then eles fi
if 条件测试命令1;then
命令序列1
elif 条件测试命令2;then
命令序列2
elif
else
命令序列n
fi
#!/bin/bash
for TM in "M" "N" "E"
do
echo "Then $TM of the day."
done
#!/bin/bash
DIR="/opt"
LMT=100
ValidUsers=`grep "/bin/bash" /etc/passwd|cut -d ":" -f 1`
for Username in $ValidUsers
do
Num=`find $DIR -user $UserName|wc -l`
if[$Num -gt $LMT];then
echo "$UserName have $Num files."
fi
done
批量添加20个帐号
#!/bin/bash
i=1
while[ $i -le 20 ]
do
useradd user$i
echo "123456" |passwd --stdin user$i &> /dev/null
i=`expr$i+1`
done
批量删除20个帐号
#!/bin/bash
i=1
while[ $i -le 20 ]
do
userdel -r user$i
i=`expr $i + 1`
done
case 根据变量的不同取值,分别执行不同的命令操作
case 变量值 in
#!/bin/bash
case $1 in
start)
echo "Start MYSQL service"
;;
stop)
echo "Stop MYSQL service"
;;
*)
echo "Usage: $0 start|stop"
;;
esac
until执行重复操作
shift用于迁移位置变量,将$1~$9座次向左传递
例如,若当前脚本程序获得的位置变量如下:
#!/bin/bash
Result=0
while [ $# -gt 0 ]
do
Result=`expr $Result + $1`
shift
done
echo "The sum is : $Result"
break
continue
函数应用
#!/bin/bash
adder(){
echo `expr $1 + $2`
}
adder 12 23
adder 223 1
转载于:https://blog.51cto.com/zhengfei/1888328