一、Shell Script介绍
1.概念
Shell脚本是包含一系列命令的文本文件
Shell读取此文件并执行命令
2.应用场景
重复性操作
批量事务处理
自动化运维
定时任务执行
二、第一个Shell脚本
编写第一个Shell脚本test.sh
#!/bin/bash
echo "Hello World"
运行Shell脚本
/bin/sh test.sh
或先给test.sh赋权限
chmod +x test.sh
再运行
./test.sh
三、变量定义及使用
a=1234#不需要声明变量
b=${a/23/'A B C'}#将23转换成A B C
c=a#直接引用变量
d=${!c}间接引用。将a的值赋给d
e=`ls -l`#将命令的结果分配给变量
f=123
g=$(($a+$b))
h=$[$a+$b]
四、预定义变量
$# 命令参数或位置参数的数量
$? 最近一次执行的命令或shell脚本的出口状态
$* 表示所有的位置参数,其值是所有位置参数的值
变
量
是
s
h
e
l
l
脚
本
里
面
的
进
程
I
D
。
S
h
e
l
l
脚
本
经
常
使
用
变量是shell脚本里面的进程ID。Shell脚本经常使用
变量是shell脚本里面的进程ID。Shell脚本经常使用变量组织临时文件名,确保文件名的唯一性
echo $0 当前脚本的文件名
echo "$@" 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同
echo $1 第一个参数
echo $# 传递给脚本或函数的参数个数
echo $* 传递给脚本或函数的所有参数
五、运算符
1.数值关系运算符
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于或等于
-ge 大于或等于
2.逻辑运算符
-a或&& 逻辑与
-o或|| 逻辑或
! 逻辑否
3.字符串运算符
= 等于
!= 不等于
-z 判断是否为空
4.文件运算符
-d 判断是否为目录
-e 判断目录或文件是否存在
-f 判断是否为文件
-r 判断文件或目录针对当前用户是否可读
-w 判断文件或目录针对当前用户是否可写
-x 判断文件或目录针对当前用户是否可执行
六、if test
1.test结构
if exit status#返回0表示true,其他的返回值为false
then
if test comparison expression or file tests
then
if [ comparison expression or file tests ]
then
if [[ comparison expression or file tests ]]
then
七、case语句
#!/bin/bash
a=$1
case $a in
1)
echo '${a} is 1'
;;
2)
echo '${a} is 2'
;;
3)
echo '${a} is 3'
;;
4)
echo '${a} is 4'
;;
*)
echo 'nothing is closed'
;;
esac
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。
八、while语句
#!/bin/bash
a=1
while [ $a -le 10 ];do echo $a;let a++;
done
九、for循环
for(b=1;$b<=10;b++)
do
echo $b
done
十、TMOUT
在用户输入空闲一段时间后自动断开
#!/bin/bash
TMOUT=3
echo "input your name,you have $TMOUT to type in"
read abc
if [ $? -eq 0 ]
then
echo "your name is $abc"
else
echo "time out"
fi