SHELL 函数与数组练习

SHELL 函数与数组练习_第1张图片

 

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

代码:

#!/bin/bash
print()
{
    if [ $* ]
    then
        echo -e "\e[1;32m OK  \e[0m"
    else
        echo -e "\e[1;31m FAILDE \e[0m"
    fi
}
print $*

 测试结果:

SHELL 函数与数组练习_第2张图片

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

代码:

#!/bin/bash
empty()
{
    if [ -z "$*" ]
    then
        echo "error!"
    else
        echo $*
    fi
}
empty $*

测试结果:

SHELL 函数与数组练习_第3张图片

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

代码:

#!/bin/bash
max()
{
    if [ $1 -gt $2 ]
    then
        result=$1
    else
        result=$2
    fi
}
read -p "Please enter two numbers:" num1 num2
max $num1 $num2
echo "max=$result"

测试结果:

SHELL 函数与数组练习_第4张图片

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

代码:

#!/bin/bash
calculate()
{
    echo -n "$1+$2="
    expr $1 + $2
    echo -n "$1-$2="
    expr $1 - $2
    echo -n "$1*$2="
    expr $1 \* $2
    echo -n "$1/$2="
    expr $1 / $2
}
read -p "Please input enter two number:" num1 num2
calculate $num1 $num2

测试结果:

SHELL 函数与数组练习_第5张图片

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

代码:

#!/bin/bash
n=0
for i in `cat /etc/shadow`
do
    array[$n]=$i
    n=`expr $n + 1`
done

for i in ${array[*]}
do
    echo $i
done

测试结果:

SHELL 函数与数组练习_第6张图片

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

代码:

#!/bin/bash
declare -A array
for i in `cat /etc/passwd | cut -d : -f 7`
do 
    let array[$i]++
done
for i in ${!array[*]}
do
    echo "$i: ${array[$i]}"
done

 测试结果:

SHELL 函数与数组练习_第7张图片

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

 代码:

declare -A array
read -p "Please enter the directory path:" path
if [ -d $path ]
then
    for i in `ls $path | cut -d . -f 2`
    do
        let array[$i]++
    done
else
    echo "The input is not a directory"
fi

for i in ${!array[*]}
do
    echo "$i:${array[$i]}"
done

测试结果:

SHELL 函数与数组练习_第8张图片

 

你可能感兴趣的:(Linux,linux,运维,服务器)