1.Shell介绍
文本文件,通常能够被Shell解释执行,以.sh结尾
批量的Linux命令集合
# 代表注释
Linux命令+Shell命令+控制语句(或者解释语句)
内容介绍:
第一行 指定解析和编译执行脚本 #!/bin/bash
除第一行外 使用#表示注释
2.Shell变量
变量名:字母、下划线开头,后面跟字母、数字、下划线,大小写敏感
name=jeff 引用 echo ${name}
作用域:当前的session生效,本地变量
环境变量:全局变量
清除变量 unset var
显示所有变量:set
3.Shell位置参量
特殊的内置变量 echo "hello kuangkuang $1 $2"
外部执行:sh test.sh huhu jeff 执行结果 hello kuangkuang huhu jeff
类似于占位符,外部来进行填充 占位符到9以后 需要${10}
$0 表示当前脚本的文件名
$# 参数的个数
$* 以单字符串显示所有的位置参量
$@ 未加双引号时与$*含义相同,加双引号时有区别
$$ 脚本运行的当前进行号
$! 最后一个后台运行的进程的进程号
$? 显示前面最后一个命令的退出状态 0表示没有错误,其他任何值表示有错误
4.Shell定义数组、date
定义数组:arr=(jeff kuang mandy)
取到数组值 ${arr[0]}
取到数组的长度 ${#arr[*]}
date +%Y-%m-%dT%H:%M:%S 2018-08-16 16:49:50
5.Shell判断
文件类型判断:
-e 文件是否存在
-f 文件是否是file
-d 文件时否是directory
权限判断:
-r 是否可读
-w 是否可写
-x 是否可执行
两个整数判断:
-eq n1==n2
-ne n1!=n2
-gt n1>n2
-lt n1<n2
-ge n1>=n2
-le n1<=n2
判断字符串:
test -z string 判断字符串是否为0?若string为空字符串,则为true
test -n string 判断字符串是否非为0?若string为空字符串,则为false
注意:-n可以省略
test str1=str2 判断str1是否等于str2,若相等,返回true
test str1!=str2 判断str1是否不等于str2,若相等,返回false
if[判断条件];then
执行脚本
else
执行脚本
fi
6.Shell循环
6.1 demo1
for var in con1 con2 con3 ...
do
程序段
done
上面demo中,这个$var的变量内容在循环工作时:
1.第一次循环时,$var的内容为con1
2.第一次循环时,$var的内容为con2
3.第一次循环时,$var的内容为con2
4.....
6.2 demo2
for((i=0;i<${num};i=i+1))
do
程序段
done
6.3 while循环
while[condition]
do
程序段
done
6.4 文件循环读取
cat $[file]| while read line
do
程序段
done