1、位置变量
bash position.sh 变量1 变量2
$0 脚本文件名
$1 位置变量1
$2 位置变量2
$# 统计位置变量个数
$* 所有位置变量的内容
#!/bin/bash
case $1 in
start)
echo "启动程序"
;;
stop)
echo "关闭程序"
;;
*)
echo "请输入start或stop"
esac
结果:[root@192 lianxi]# bash casev2.sh start
启动程序
2、case语句
#!/bin/bash
case $1 in
start) #条件也可以是正则匹配
echo "启动服务"
;;
stop)
echo "关闭服务"
;;
restart|reload)
echo "重启服务"
;;
*)
echo "useages: please use start|stop|restart|reload"
esac
3、while语句
while :或 while true或 while [1]
do
...
done
控制循环次数
i=1
while (( i < $1 ))
do
echo $i
((i++))
done
死循环控制退出
k=1
while :
do
if (( $k == 3 ));then
break
fi
echo $k
((k++))
done
导文件
练习:如何将这个文件的内容输出
[root@192 lianxi]# cat student_info.txt
name age sex grade
cali 36 man 80
liyu 24 man 90
wangsy 20 woman 92
方法1: 导入文件里的字段,赋给对应的变量
#!/bin/bash
while read name age sex grade
#变量名可以自己定义,没必要和字段名一样
do
echo "名字是$namem,性别是$sex,年龄是$age,成绩是$grade"
done < student_info.txt
方法2: 同上,不同写法
#!/bin/bash
cat student.txt | while read name age sex grade
do
echo "名字是$name,性别是$sex,年龄是$age,成绩是$grade"
done
方法3:将整行给一个变量,以空格作为分隔符
#!/bin/bash
while read line
do
echo $line
done < student_info.txt
执行结果:
名字是name,性别是sex,年龄是age,成绩是grade
名字是cali,性别是man,年龄是36,成绩是80
名字是liyu,性别是man,年龄是24,成绩是90
名字是wangsy,性别是woman,年龄是20,成绩是92
4、break、return、exit、continue
break跳出当前循环
exit 退出整个脚本
5、 双括号
双圆括号
(( a+b )) :整数的运算和比较,俩边可以不空格
双中括号
[[ str == “123” ]] :字符串的比较 逻辑运算,俩边要有空格
6、数组
- 数组定义用空格作为分隔符
- 数组的调用用花括号
- 数字下标越界不报错,输出为空
- ${#singer[@]} $(#name)
- 删除元素下标不连续
- 删除数组 unset singer
[root@localhost ~]# singer=(Bob cali hejin Alice Tony)# 定义数组,以空格作为分隔符
[root@localhost ~]# echo ${singer[3]} #输出第n个元素
Alice
[root@localhost ~]# echo ${singer[@]} #输出元组的所有元素
Bob cali hejin Alice Tony
[root@localhost ~]# echo ${singer[*]} #输出元组的所有元素
Bob cali hejin Alice Tony
[root@localhost ~]# echo ${#singer[*]} #统计数组元素的个数
5
[root@localhost ~]# echo ${#singer[@]} #统计数组元素的个数
5
[root@localhost ~]# echo ${!singer[@]} #查看所有下标
0 1 2 3 4
[root@localhost ~]# unset singer[2] #删除元素,但是元组下标保持不变
[root@localhost ~]# echo ${singer[*]}
Bob cali Alice Tony
[root@localhost ~]# unset singer 删除元组