Shell数组

Shell编程之until语句和Shell函数

until语句的结构

重复测试某个条件,只要条件不成立则反复执行

until  条件测试操作
do
   命令序列
done

在这里插入图片描述

until语句应运示例

为指定用户发送在线消息
若用户不在线(未登陆系统)则每5秒试一次,直到用户登录系统后再发送信息
用户名与消息通过位置参数传递给脚本

#!/bin/bash
#判断信息格式
if [ $# -lt 1 ];then
   echo "Usage:`basename $0` <username> [<message>]"
    exit 1
fi
#判断用户是否存在
if grep "^$username:" /etc/passwd >/dev/null;then :
else
    echo "用户不存在"
    exit 1
fi
#用户是否在线,如果不在线每5秒联系一次
until who |grep "$username" > /dev/null;do
       echo "用户不在线"
       sleep 5
done
mes=$*
echo $mes | write $username

Sheel函数

将命令序列按照格式写在一起
可方便重复使用命令序列
Sheel函数定义

[ function ]     函数名(){
          命令序列
         [return  x]
}
使用return或exit可以显示地结束函数

调用函数的方法

函数名  [参数1] [参数2]

Shell函数应运示例

示例1

两个数字求和
通过sum(){}定义函数
使用read命令交互输入两个数并求和

示例2

编写登录系统后便可使用的用户自定义函数
编辑用户自定义函数文件/root/function
在当前Shell中加载课执行的函数文件/root/function
在~/bashrc文件中添加source /root/function命令

Shell数组

应运场景包括
(1)获取数组长度
(2)获取元素长度
(3)遍历元素
(4)元素切片
(5)元素替换
(6)元素删除

数组定义方法

数组元素之间使用空格隔开
方法一

数组名= (value0 value1 value2 value3 ....)

在这里插入图片描述

[root@localhost ~]# for v in ${num[@]}
> do
> echo $v
> done

在这里插入图片描述

[root@localhost ~]# vim 9.sh
#!/bin/bash
num=(11 22 33 44 55)
for ((i=0;i<${#num[*]};i++))
do
   let num[i]++
   echo ${num[i]}
done
[root@localhost ~]# chmod +x 9.sh
[root@localhost ~]# ./9.sh

在这里插入图片描述

方法二

数组名= ([0]=value [1]=value [2]=value .....)

方法三

列表名="value1 value1 value2 ...."
数组名= ($列表名)

方法四

数组名[0]="value"
数组名[1]="value"
数组名[2]="value"

数组包括的数据类型
数值类型
字符类型
使用“”或‘’定义

Shell数组操作

获取数组长度

${数组名[@/*]}

读取某下标赋值

${数组名[下表]}

数组遍历

在这里插入代码片

Shell脚本调试

echo命令
bash命令
语法

sh  [-nvx]  脚本名

常用选项
-n:不执行脚本,仅检查语法。没有语法问题不显示任何内容、有问题提示报错
-v: 执行脚本时,先显示脚本内容,然后执行脚本。存在错误时,给出错误提示
-x:将执行的脚本内容输出到屏幕上
set命令
set -x:开启调节模式
set +x:关闭调节模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值