Linux提供的Shell解析器有:sh,bash,
bash 和sh的关系:sh是bash的软链接
1.定义变量:变量名=“ xx”
变量名称可以由字母,数字和下划线组成,但不能以数字开头,环境变量名建议大写。
注意,等号两侧不能有空格,如果有空格,必须要用‘单引号或者双引号包裹
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
拿变量值:echo $变量名
2.删除(取消)变量:unset 变量名
3.定义数组:数组名=(“元素1” “元素2”...)
取数组值
单个 echo ${数组名【下标】}
全部 echo ${数组名 【*】}
4.提升变量访问范围:export 变量(全局)
5.正确选择引号:
没有空格,不需要加引号
单引号:不会解析内部变量
双引号:会自动解析内部变量
6.反引号:可以将命令的结果保存至变量中
变量名 = 命令
(反引号包裹)
变量名=$(命令)
7.特殊的变量名:
1.$n :n为数字 ,$0代表脚本名称,$1-$9,代表第一到第九个参数,10以上的参数${10},(对应的$n只会拿对应的固定位置参数)
2.$#:获取参数个数,常用于循环
3. $* :这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体,(相当于会把所有参数当作一个字符串)
4.$@:这个变量也代表命令中所有的参数,会把$@把每个参数区分对待,(相当于把所有参数当作数组元素,一样输出)
3.$?:表示查看上一次命令或者脚本的执行状态结果是否正确,如果为0,表示正确,如果非0,表示错误
8.运算符: +,-,"*",/,%(加,减,乘,除,取余)
运算写法:
echo $[运算式] 或者
echo $((运算式))
或者 expr n + n
注意:expr运算符间要有空格,
9.逻辑运算符:格式: [条件] 注意:[] 里面前后必须要有空格
结果:0表示真,非0表示假
1.两个整数之间比较:
=字符串比较
-lt:小于(less than) -le:小于等于(less equal)
-eq:等于(equal) -gt :大于(greater than)
-ge :大于等于(greater equal) -ne:不等于(Not equal)
2.按照文件权限进行判断:
-r:读权限 -w:写
-x:执行
3.按照文件类型进行判断:
-f:普通文件 -e:文件存在 -d:文件存在并是一个目录
4.多条件判断:(&&表示前一条命令执行成功时,才执行后一条命令 ,||表示上一条命令执行失败后,才执行下一条命令)
10.正则表达式:使用单个字符串描述,匹配一系列符合某个语法规则的字符串
^:匹配以什么开头
$:以什么结尾
. :匹配任意字符
*:不单独使用,表示匹配上一个字符的任意次数,
字符区间(中括号):[]
[6,8]:匹配6或8
[0-9] :匹配·1个0-9的数字
[0-9]*:匹配任意长度的数字字符串
[a - z]:匹配1个a-z之间的字符
[a-z]*:匹配任意长度的字母字符串
[a-ce-f]:匹配a-z或者e-f之间的任意一个字符
特殊字符: \
\表示转义,并不会单独使用,当匹配到某一特殊字符本身,就会困难,
例如,输出中含有$,那么必须是 “ \\$ '',或者 ‘\$’
11.扩展的正则表达式:如{n,m},对于这种,grep匹配需要添加 -E选项,
语法格式(if,for,while,case,select,unitl,read,自定义函数)
1.if:(条件选择)
注意事项:1. [ 条件判断式 ] ,中括号和条件判断式之间必须要有空格
2.if 后要有空格
用法格式:
if 判断条件 ;then
条件为真的分支代码
elif 判断条件2 ;then
条件为真的分支代码
else
以上条件都为假的分支代码
fi
2.case:(条件判断)
case $name in
PART1)
cmd
;;
PART2)
cmd
;;
*)
cmd
;;
esac
注意事项:
1.case行尾必须为单词in,每个模式匹配必须以右括号“)”结束
2.双份号“;;”表示命令序列结束,相当于java的break
3.最后的“*)”表示默认模式,相当于java的default
3.for:(循环)
用法格式:
方式一:
for name in 列表 ;do
循环体
done
方式二:
for ((初始值;条件表达式,变量改变));do
cmd
done
此处常用$* 和 $@
注意区别,$@会将所有参数当作数组元素,$*会将所有参数当作1个字符串
#####
4.while:
用法格式:
while 循环控制条件 ;do
循环
done
循环控制条件;进入循环之前先做一次判断,每一次循环之后再次做判断,条件为true,则执行,知道false
5.unitl:
用法格式:
unitl 循环体 ;do
循环
done
进入条件:循环为true,退出条件,循环条件为false,刚好和while相反,不常用
6.select:
select variable in list
do
循环体命令
done
7.read:read(选项)(参数)
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)。
参数
变量:指定读取值的变量名
8.自定义函数:
[ function ] funname[()]
{
Action;
[return int;]
}
funname
(1)必须在调⽤函数地⽅之前,先声明函数,shell脚本是逐⾏运⾏。不会像其它语⾔⼀样先编 译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后⼀
条命令运⾏结果,作为返回值。return后跟数值n(0-255)