一、创建:
创建:vi 文件名.sh
运行:方式一: chmod u+x,添加执行权限后,./文件名.sh运行
方式二:bash 文件名.sh 运行
二、变量:
1.自定义变量:不需要定义,可以直接赋值,引用变量时,需在变量名前加$
eg:A=10 B=$A (所有语句都不需要加分号结束) 表示A=10,把A的值赋值给B,B=10
2.预定义变量:
环境变量: PATH HOME
位置变量:
$0-$9命令行参数,表示在执行该文件时,在执行命令后面进行占位传值,$0表示执行命令的位置,所以对程序内的预定义变量是从$1开始的。
$@和$*都表示所有命令参数
$# 命令行参数个数
$? 上一次命令参数行执行的状态 0为真、1为假,与c语言相反
三、功能语句:
read 输入 : eg:read A表示执行时对A进行传值
test 判断字符串:
test s1=s2 判断s1与s2是否相等
test s1!=s2 判断s1与s2是否不相等
test -z s1 判断s1的长度为0
数字的判断:
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
文件的判断:
-d name 测试name是否为一个目录
-e name 测试一个文件是否存在
-f name 测试name 是否为普通文件
-L name 测试name 是否为符号链接
-r name 测试name 文件是否存在且为可读
-w name 测试name 文件是否存在且为可写
-x name 测试name 文件是否存在且为可执行
-s name 测试name 文件是否存在且其长度不为0
f1 -nt f2 测试文件f1 是否比文件f2 更新
f1 -ot f2 测试文件f1 是否比文件f2 更旧
expr: 计算算数表达式,例如:加减乘除 计算并输出运算结果
注意:非单独使用时,需要``将语句包含起来,进行命令置换,否则会将其理解为字符串进行赋值
eg:A=`expr 12 + 13` (注意,要加空格,不可省略)
if控制语句:
if [条件] //if test 测试内容 也可以执行
then
语句
else
语句
fi //结束if语句
if [条件]
then
语句
elif [条件]
then
语句
else
语句
fi
例1:两个数A,B,输出最大值
A=10
B=20
if[A -gt B]
then
echo $A
else
echo $B
fi
case控制语句:
case 条件 in
值1|值2) //可以有多个值,用|隔开
语句
值3)
语句
esac //结束case语句
例2: 输入1到30范围内的数,假如1号是星期一,求输入的数为星期几
case `$1 % 7` in
1)
echo 星期一
2)
echo 星期二
3)
echo 星期三
4)
echo 星期四
5)
echo 星期五
6)
echo 星期六
7)
echo 星期天
esac
for循环语句:
for 值 in 条件 for A in `seq 0 2 100` 表示A=0,A小于等于100执行do语句,每次A累加2
do
语句
done //结束循环
例3:求0-100的和
sum=0
for A in `seq 0 1 100` //0<A<100 循环一次累加1
do
sum=$sum+$A
done
echo sum
while循环语句:
while 条件
do
语句
done
求0-100的和
A=0
sum=0
while test A -le 100 //=while [A -le 100]
do
sum=$sum+$A
A=$A+1
done
echo sum
函数:
函数不需要返回值和参数声明
func()
{
形参
语句
}
func 实参 //函数的调用和传参
$? //函数返回值