青海企业网站建设公司百度竞价推广方案范文
题目
提示:没有基础请先看看基础部分的讲解,否则看不懂
1,编写函数,实现判断是否无位置参数,如无参数,提示错误
代码:
#bash/bin
function a() {b=$# #判断传入的参数个数
# echo $bif [ $b -eq 0 ] # 看参数个数是不是等于0 thenecho "no"elseecho "yes"fi
}
a
1,当不传入参数时,结果为:
no
2,当传入参数时,结果为:
yes
2,编写函数实现两个数字做为参数,返回最大值
代码
function a() { # 定义函数num1=$1 # 获取第一个参数
# echo "num1:$num1"num2=$2
# echo "num2:$num2"if [ $num1 -gt $num2 ] # 2个参数进行比较thenecho "$num1" # 返回第一个参数elseecho "$num2" # 返回得第二个参数fi
}
c=$(a 200 300) # 传入2个参数,并且将返回值赋值给c
echo "the $c is more big"
运行输出结果:
[root@localhost ~]# bash functiontest.sh
the num1:200
num2:300
300 is more big
3,编写函数,实现两个整数位参数,计算加减乘除
代码
a(){one=$1two=$2echo "$one + $two = `expr $one + $two`"echo "$one - $two = `expr $one - $two`"echo "$one * $two = `expr $one \* $two`"echo "$one / $two = `expr $one / $two`"printf "$one / $two = `expr $one / $two`\n"}
a 2 3
运行结果
[root@localhost ~]# bash functiontest.sh
2 + 3 = 5
2 - 3 = -1
2 * 3 = 6
2 / 3 = 0
2 / 3 = 0
4、将/etc/shadow文件的每一行作为元数赋值给数组
代码
function a(){a=`wc -l /etc/shadow | cut -d" " -f1` # 将目标文件进行剪切,提取需要的数据,这里代表数据个数
for i in `seq $a`
dob=`expr $i - 1` # 数组下标arr[$b]=`awk 'NR=='$i'{print}' /etc/shadow` # 将对应的哪一行数据放入到数组
done
}
a
echo ${arr[0]} # 打印数组的第一个元素
echo ${arr[1]} #第二个
echo ${arr[2]}
echo ${arr[3]}
以上的结果显示为: 结果的验证可以用cat 命令对目标文件进行对比
[root@localhost ~]# bash functiontest.sh
root:$6$SqQF33Q5poRxzqNJ$mAZ7EJuymCGVS6HxSAinq4danhF48kUbkyg/Kck3VJ8mIO5tDJlrsbQ04.aXbUb63rif82rIR/Xuatvcdj6Bp1::0:99999:7:::
bin:*:19121:0:99999:7:::
daemon:*:19121:0:99999:7:::
adm:*:19121:0:99999:7:::
5,使用关联数组统计文件/etc/passwd中各个用户的shell类型
代码
function a(){read -p "which user's shell type that you want find?:" shell_type # 提示加读取输入的变量declare -A arry # 必须声明关联数组l=`wc -l /etc/passwd | cut -d " " -f1` # 计算数据的条数for i in `seq $l`do
# ass-arry[`expr $i - 0`] index=`cat /etc/passwd | awk 'BEGIN{FS=":"}{print $1}' | awk 'NR=='$i'{print}'` # 关联数组的下标# echo "index $index"declare -A arryarry["$index"]=`cat /etc/passwd | awk 'BEGIN{FS=":"}{print $7}' | awk 'NR=='$i'{print}'` # 关联数组的值doneecho "the user $shell_type's shell type is ${arry[$shell_type]}" # 格式化输出
}
a
运行的结果:
[root@localhost ~]# bash functiontest.sh
which user's shell type that you want find?:fu
the user fu's shell type is /bin/bash[root@localhost ~]# bash functiontest.sh
which user's shell type that you want find?:root
the user root's shell type is /bin/bash[root@localhost ~]# bash functiontest.sh
which user's shell type that you want find?:bin
the user bin's shell type is /sbin/nologin
6,使用关联数组按扩展名统计指定目录中文件的数量
代码
function a() {read -p "input a file path (absolute):(such as input /etc/)>" path # 输入路径read -p "which type of file are you count ?:(such as input txt or sh ...)>" type1 # 输入文件类型a=`ls -l $path | awk '{print $9}' | grep '^[^$]' | awk 'BEGIN{FS="."}{print $2}'` # 看有几个文件有后缀名declare -A arrfor i in $ado# echo "file type: $i"arr["$i"]=`expr ${arr["$i"]} + 1` # 对文件类型计数表示该类型文件个数doneecho "the file of type $type1 have ${arr[$type1]}"
}
a
运行结果如下:结果的验证可以用自己数
[root@localhost ~]# bash functiontest.sh
input a file path (absolute):(such as input /etc/)>/etc/
which type of file are you count ?:(such as input txt or sh ...)>conf
the file of type conf have 36[root@localhost ~]# bash functiontest.sh
input a file path (absolute):(such as input /etc/)>/etc/
which type of file are you count ?:(such as input txt or sh ...)>d
the file of type d have 24
7,编写函数 ,判断是否有参数,存在为Ok,不存在为FAILED,要求绿色OK和红色FAILED
代码:
function a() {b=$#
## echo $bif [ $b -eq 0 ]thenecho -e "\e[31m failde \e[0m";elseecho -e "\e[32m ok \e[0m";fi
}
a 1