当前位置: 首页 > article >正文

shell 脚本编写

文章目录

  • 练习题目:
    • 1.编写函数,实现打印绿色0K和红色FAILED,判断是否有参数,存在为0k,不存在为FAILED
    • 2.编写函数,实现判断是否无位置参数,如无参数,提示错误
    • 3.编写函数实现两个数字做为参数,返回最大值
    • 4.编写函数,实现两个整数位参数,计算加减乘除。
    • 5.将/etc/shadow文 件的每一-行作为元数赋值给数组
    • 6.使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量
    • 7.使用关联数组按扩展名统计指定目录中文件的数量

练习题目:

在这里插入图片描述

1.编写函数,实现打印绿色0K和红色FAILED,判断是否有参数,存在为0k,不存在为FAILED

#!/bin/bash

function print_result() {
    if [ $# -eq 0 ]; then
        echo -e "\033[0;31mFAILED\033[0m"
    else
        echo -e "\033[0;32m0K\033[0m"
    fi
}

# 调用函数测试
print_result
print_result param1

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

#!/bin/bash

function check_arg() {
    if [ $# -eq 0 ]; then
        echo "Error: No arguments provided."
    else
        echo "Arguments provided."
    fi
}

# 调用函数测试
check_arg
check_arg param1

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

#!/bin/bash

function max_num() {
    if [ $1 -gt $2 ]; then
        echo $1
    else
        echo $2
    fi
}

# 调用函数测试
max_num 10 20
max_num 30 20

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

#!/bin/bash

function math_operation() {
    echo "Addition: $(($1 + $2))"
    echo "Subtraction: $(($1 - $2))"
    echo "Multiplication: $(($1 * $2))"
    if [ $2 -eq 0 ]; then
        echo "Cannot divide by 0."
    else
        echo "Division: $(($1 / $2))"
    fi
}

# 调用函数测试
math_operation 10 5
math_operation 20 0

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

#!/bin/bash

declare -a shadow_arr=() # 声明一个空数组

while read line; do
    shadow_arr+=("$line") # 将每行字符串添加到数组中
done < /etc/shadow

echo "shadow_arr: ${shadow_arr[@]}" # 打印数组元素

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

#!/bin/bash

declare -A shell_counts=() # 声明关联数组

while read line; do
    shell=$(echo $line | awk -F':' '{print $NF}') # 获取shell类型
    ((shell_counts["$shell"]++)) # 关联数组计数
done < /etc/passwd

# 遍历关联数组打印每个类型的数量
for key in "${!shell_counts[@]}"; do
    echo "$key: ${shell_counts[$key]}"
done

7.使用关联数组按扩展名统计指定目录中文件的数量

#!/bin/bash

declare -A file_counts=() # 声明关联数组

dir_path="/path/to/dir" # 指定目录路径

for file_path in $dir_path/*; do
    file_name=$(basename "$file_path") # 获取文件名
    extension="${file_name##*.}" # 获取文件扩展名
    ((file_counts["$extension"]++)) # 关联数组计数
done

# 遍历关联数组打印每个扩展名的数量
for key in "${!file_counts[@]}"; do
    echo "$key: ${file_counts[$key]}"
done


http://www.kler.cn/news/9296.html

相关文章:

  • uniapp - 实现车牌号键盘与格子间隔显示组件,汽车牌照录入支持自定义样式、新能源等(附带组件完整源码,开箱即用,稍微改改就能用)
  • ReRes 谷歌浏览器插件使用
  • JavaSE基础(27) 数组
  • [深层次分析]Thinkphp项目 mysql连接报 SQLSTATE[HY000] [2006] MySQL server has gone away
  • MySQL存储引擎
  • Java进击框架:Spring-表达式(三)
  • 集成时间序列模型提高预测精度
  • 【Linux】进程控制(2)(阻塞vs非阻塞 进程程序替换 替换函数 单进程: 别的方式 进程程序替换原理 通过myexec执行自己写的程序)
  • 卫龙携手鸿翼打造研发知识管理平台,“辣条一哥”再次为食品安全和健康发力
  • jmeter跨平台分布式部署
  • vue悬浮导航实现内容滚动时,导航跟随选中,点击导航滚动到相应位置,
  • Android 9.0 添加关机铃声功能实现
  • 用css如何实现样式延迟显示
  • TCP/IP协议及配置
  • 001:Mapbox GL加载基础的地图
  • RHCE-NTP、SSH服务器
  • Spring框架————面试题
  • 使用Docker搭建RabbitMQ集群并用HAProxy实现负载均衡
  • CPP设计-寸步难行
  • Vue开发常用的工具有哪些?