003-常用的Shell脚本
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