Linux 位置变量、case/while 、双括号、数组

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 删除元组

关联数组

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个手刹不太灵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值