shell脚本语言中函数与数组的简单运用

您所在的位置:网站首页 树怎么画简单的 shell脚本语言中函数与数组的简单运用

shell脚本语言中函数与数组的简单运用

2023-05-20 03:55| 来源: 网络整理| 查看: 265

#!/bin/bash ######################### #File name:zuoye1.sh #Version:v1.0 #Email:[email protected] #Created time:2023-05-06 17:37:53 #Description: ######################### function print_status { if [ $# -eq 0 ]; then echo -e "\e[31mFAILED\e[0m" else echo -e "\e[32mOK\e[0m" fi } print_status $@

结果:

 2.位置参数是一种函数参数类型,指的是在函数调用时,按照函数定义的顺序提供给函数的参数。所以与第一题类似,也是通"$#"获取参数个数来进行判断

整体代码实现如下:

#!/bin/bash ######################### #File name:zuoye2.sh #Version:v1.0 #Email:[email protected] #Created time:2023-05-06 17:55:05 #Description: ##################### location_parameter() { if [ $# -eq 0 ];then echo "错误,无参数输入" else echo "有参数输入" fi } location_parameter $@

结果:

 3.通过两个数字参数比较大小,输出最大值,由于固定了参数个数所以可以直接用“$1 $2”来获取参数进行比较。

整体代码如下:

#a!/bin/bash ######################### #File name:zuoye3.sh #Version:v1.0 #Email:[email protected] #Created time:2023-05-12 13:14:49 #Description: ######################### numeric_comparison() { if [ $1 -gt $2 ]; then echo $1 else echo $2 fi } max=$(numeric_comparison $1 $2) echo "最大值是$max"

结果:

 4.通过$1 $2 来获取参数,并通过变量来储存两整数的计算结果最后输出,需要注意的是除法需要判断被除数是否为零

整体代码如下:

#!/bin/bash ######################### #File name:zuoye4.sh #Version:v1.0 #Email:[email protected] #Created time:2023-05-12 13:41:42 #Description: ######################### calculate { add=$(( $1 + $2 )) subtract=$(( $1 - $2 )) multiply=$(( $1 * $2 )) if [ $2 -eq 0 ]; then divide=$(( $2 / $1 )) else divide=$(( $1 / $2 )) fi } calculate echo "加减乘除分别是:$add $subtract $multiply $divide"

结果:

 5.我们使用 readarray 命令将 /etc/shadow 文件中的每一行读取并存在数组中。 然后,我们使用 for 循环遍历数组,并输出每一行。

请注意,此脚本需要具有足够的权限才能读取 /etc/shadow 文件。

整体代码如下:

#!/bin/bash ######################### #File name:zuoye5.sh #Version:v1.0 #Email:[email protected] #Created time:2023-05-12 14:07:35 #Description: ######################### readarray -t shadow_array < "/etc/shadow" for line in "${shadow_array[@]}" do echo "$line" done

结果:

 6.我们定义了一个关联数组来统计每个 shell 的数量。使用 while 循环从 /etc/passwd 文件中逐行读取内容。然后,我们使用 cut 命令从每一行中提取出用户和 shell 信息。接下来,我们将 shell 添加到关联数组中。如果 shell 已经存在,则增加其计数器;否则将其添加到关联数组中并将计数器设置为 1。最后,我们使用 for ... in 循环遍历关联数组,输出每个 shell 的数量。

整体代码如下:

#!/bin/bash ######################### #File name:zuoye6.sh #Version:v1.0 #Email:[email protected] #Created time:2023-05-12 14:25:31 #Description: ######################### declare -A shell_count while read line do user=$(echo $line | cut -d':' -f1) shell=$(echo $line | cut -d':' -f7) if [[ ${shell_count[$shell]} ]]; then shell_count[$shell]=$(( ${shell_count[$shell]} + 1 )) else shell_count[$shell]=1 fi done < /etc/passwd for shell in "${!shell_count[@]}" do count=${shell_count[$shell]} echo "Shell $shell: $count user(s)" done

结果:

 7.通过find命令获取目录下所有文件,并输出每个文件的文件名。将find命令的输出通过管道传递给awk命令。在awk命令中,使用-F 选项指定分隔符为".",按照每个文件的扩展名进行分组统计,统计结果保存在关联数组count中。使用END代码块,在所有文件都处理完毕后输出统计结果。

整体代码如下:

#!/bin/bash ######################### #File name:zuoye7.sh #Version:v1.0 #Email:[email protected] #Created time:2023-05-12 14:33:54 #Description: ######################### root_dir="/jiaaoben" find "$root_dir" -type f -printf '%f\n' | \ awk -F . '{count[$NF]++} END {for (ext in count) print "扩展名: " ext ", 文件数量: " count[ext]}'

结果:

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3