BASH脚本练习

1、编写函数,实现打印绿色OK和红色FAILED
   判断是否有参数,存在为Ok,不存在为FAILED
2、编写函数,实现判断是否无位置参数,如无参数,提示错误
3、编写函数实现两个数字做为参数,返回最大值
4、编写函数,实现两个整数位参数,计算加减乘除。
5、将/etc/shadow文件的每一行作为元数赋值给数组
6、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

 1、编写函数,实现打印绿色OK和红色FAILED,判断是否有参数,存在为Ok,不存在为FAILED

知识点:

# echo -e "\033[字背景颜色;字体颜色;字体属性m 需要输出的内容 \033[0m"
红色=31
绿色=32

 代码:

[root@server project]# vim if_col.sh
if [ "$#" -eq 0 ]; then
        echo -e "\e[31m FAILED \e[0m"
else
        echo -e "\e[32m OK \e[0m"
fi

 

 2、编写函数,实现判断是否无位置参数,如无参数,提示错误

 $#可以判断位置参数是否存在,然后利用$1打印位置参数

[root@server project]# vim if_ture.sh #创建一个脚本
if [ "#" -eq 0 ]; then 判断位置参数是否存在
        echo 错误:没有位置参数
else
        echo "参数的数量是: $1"
fi

 3、编写函数实现两个数字做为参数,返回最大值

我的想法是利用交互式,如果之间使用带位置参数的可以用$1 $2 获取值再比较

[root@server project]# vim data_gt.sh
read -p "请输入第一个数字" a
read -p "请输入第二个数字" b
max(){
        if [ $a -gt $b ];then
                echo $a
        else
                echo $b
        fi
}
max

 4、编写函数,实现两个整数位参数,计算加减乘除。

[root@server project]# vim sum_data.sh
# 定义函数  
calculate() {
    # 获取参数  
    num1=$1
    num2=$2

    # 执行加法运算  
    add=$((num1 + num2))
    echo "加法结果: $add"  

    # 执行减法运算  
    sub=$((num1 - num2))
    echo "减法结果: $sub"  

    # 执行乘法运算  
    mul=$((num1 * num2))
    echo "乘法结果: $mul"  

    # 执行除法运算  
    if [ $num2 -ne 0 ]; then
        div=$((num1 / num2))
        echo "除法结果: $div"  
    else
        echo "除数不能为0"  
    fi
}

# 调用函数并传递参数  
calculate 10 5


 5、将/etc/shadow文件的每一行作为元数赋值给数组

[root@server project]# vim read_line.sh
#!/bin/bash  

# 读取文件内容到数组  
readarray -t lines < /etc/shadow

# 遍历数组并打印每一行的内容  
for line in "${lines[@]}"
do
    echo "$line"  
done

 

 6、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

[root@server project]# vim shell_con.sh
#!/bin/bash  

# 声明关联数组  
declare -A shell_counts

# 读取/etc/passwd文件  
while IFS=: read -r username passwd uid gid fullname home_dir shell; do
    # 获取shell名称(忽略大小写)  
    shell_name=$(basename "$shell" | tr '[:upper:]' '[:lower:]')

    # 增加shell计数  
    ((shell_counts[$shell_name]++))
done < /etc/passwd

# 打印结果  
for shell_name in "${!shell_counts[@]}"; do
    count=${shell_counts[$shell_name]}
    echo "$shell_name: $count"  
done | sort -k2 -n


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值