shell脚本语言中函数与数组的简单运用 |
您所在的位置:网站首页 › 树怎么画简单的 › shell脚本语言中函数与数组的简单运用 |
#!/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 |