脚本以#!/bin/(指定解释器)通常以
#!/bin/bash
1.基本语法
1.定义变量: 变量=值
A=1
查看值echo A
2.撤销变量:unset 变量
3.声明静态变量:readonly B=3
注意,readon变量不能unset
2.变量定义规则
1.变量名称可以由字母,数字下划线组成,但不能以数字开头,环境变量建议大写
2.等号俩测不能有空格
3.在bash中,变量弄人类型都是字符串类型,无法直接进行数值运算
4.变量的值如果有空格,需要使用双引号或单引号括起来
5.把变量升级为全局变量,可供其他shell程序使用
3.特殊变量
1.基本语法
$n n为数字,$0代表脚本名称、$1-$9代表第一个到第九个参数,十以上的参数需要用大括号包含如${10}
$# 获取所有输入参数个数,常用于循环
$* 这个变量代表命令行中所有的参数,$*把所有参数看成一个整体
$@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$? 最后一次执行命令的返回状态,如果这个变量值为0,证明上一个命令正确执行,如果这个变量值非0(具体是哪个数,由命令自己决定)则证明上一个命令执行不正确
运算符
$((运算式)) 或 $[运算式]
expr +,-,\*,/,%加减乘除取余
注意使用expr运算符之间要有空格
2加3乘4算法
expr `expr 2 + 3` \* 4
符号点在键盘esc下面
条件判断
基本语法
[ condition ](注意condition前后要有空格)。
注意:条件非空即为true,[ atguigu ]返回true,[]返回false。
常用条件判断
(1〉两个整数之间比较。
=字符串比较,
-lt小于(less than)
-le小于等于(less equal) .
-eq等于( equal>
-g大于( greater than) .
-ge 大于等于(greater equal)
-ne不等于(Not equal )
.(2〉按照文件权限进行判断,
-r有读的权限(read)
-w有写的权限(write) .
-x有执行的权限( execute) .
(3)按照文件类型进行判断,
-f文件存在并且是一个常规的文件(file)
-e文件存在( existence)
-d文件存在并是一个目录( directory )
案例22是否大于等于23
$ [ 22 -ge 23 ]
$ echo $?
通过$?返回值为0,可判断出23大于等于22
(4)多条件判断(&&表示前一条命令执行成功时,才执行后一条命令,表示上一条命令执行失败后,才执行下一条命令)。
流程控制
1.if判断
if[ 条件表达式 ];then
程序
fi
或者
if[ 条件表达式 ]
then
程序
fi
注意事项
[ 条件表达式 ],中括号和条件表达式必须有空格
if 后要有空格
2.case语句
case $变量名 in
"值1”)
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量值等于值2,则执行程序2
;;
(其他的变量值以此类推)
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项: .
1l) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
. 2)双分号“;;”表示命令序列结束,相当于java中的 break。.
3)最后的“*)”表示默认模式,相当于java中的 default。.
3.for循环
1)
for (( 初始值;循环控制条件;变量变化))
do
程序
done
案例从1加到100
#!/bin/bash
s=0
for ((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo $s
(结束)
2)
for 变量 in 值1 值2 值3...
do
程序
done
4.while循环
while [ 条件判断式 ]
do
程序
done
案例从一加到一百
s=0
i=1
while [ $i -le 100 ]
do
s=$[$ + $i]
i=$[$i + 1]
done
echo $s
read读取控制台输入
read(选项)(参数)
选项
-p: 指定读取值时的提示符
-t: 指定读取值是等待的时间(秒)
参数
变量:指定读取值的变量名
案例:提示七秒内,读取控制台输入的名称
#!/bin/bash
read -t 7 -p "enter your name in 7 seconds" NAME
echo $NAME