1:编写函数实现两个数字做为参数,返回最大值
#!/bin/bash
pd() {
N1=`echo "$1-$2"|bc`
if [ $# -eq 2 ];then
if (echo "$1 $2"|grep -o "[^[:digit:]\.[:space:]]">/dev/null);then
echo "必须是纯数字"
else
if (echo $N1| grep -o "^-">/dev/null);then
echo "Max: $2"
else
echo "Max: $1"
fi
fi
else
echo "只能输入2个数为参数:"
fi
}
pd $1 $2
2:斐波那契数列又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)
#!/bin/bash
sz(){
for n in $(seq 3 $1);do
f[$n]=$[${f[$n-1]}+${f[$n-2]}]
echo ${f[$n]}
done
}
sz $1
3:1.)执行时会询问,请输入要创建的用户名称(当用户超时8秒不输入,提示超时并退出),脚本会检测用户名是否已经存在,若已存在,则提示用户已存在,是否要为其设置密码,如否,则继续回到第1步,询问用户另一个用户名。如是,进入第3步。
2.)如第1步完成,则会创建指定用户,然后脚本继续问用户是否为新用户设置密码,如否,则返回第1步继续创建其他用户,如是,则进入第3步
3.)为用户设置密码,要求密码要验证2次,2次一致才可通过。同时密码要满足复杂性要求,要求如下:
密码至少8个字符长度,密码必须包含 大写,小写字母,数字,和#@!,._ 这之中的三种字符。 如不满足,则提示用户密码太短或太简单,返
回第3步。
且密码不能是 /usr/share/dict/words 已存在的字符,或是,则提示用户密码是个常见单词,然后返回第3步。
用户只能尝试设置新密码3次,若超过3次仍然没有设置出满足要求的密码,则直接返回第1步。
4.)在任何步骤,只要输入exit均可退出脚本。
#!/bin/bash
hs() {
read -t 8 -p "输入用户名: " Name
if [ "$Name" = "" ];then
echo "限定时间已到"
exit
else
tc
if ( id $Name>/dev/null);then
mmsz
else
useradd $Name
mmsz
fi
#------密码设置---------------
fi
}
mmsz(){
read -p "是否设置密码:(y/n) " pas
tc
case $pas in
y)
mmyz;;
n)
hs;;
esac
}
#----密码样式---------
mmyz(){
let n++
if [ $n -eq 4 ];then
echo "密码错误输入超过上限"
hs
else
read -p "输入密码8个字符的大小写数字及特殊字符(最少含有其中3类): " pass
tc
gs=`echo $pass|grep -o -e "[[:lower:]]" -e"[[:upper:]]" -e "[0-9]" -e "[@_,.\!]"|tr "[:upper:]" "L"| tr "[:lower:]" "X"|tr "[0-9]" "S"|tr "[@_,.\!]" "T"|grep -o "[[:upper:]]"|sort|uniq|wc -l`
c=`echo $pass|wc -c`
if (grep "$pass" /usr/share/dict/words >/dev/null);then
mmyz
else
if [ $gs -ge 2 -a $c -ge 9 ];then
read -p "确认密码: " repass
tc
if [ "$pass" = "$repass" ];then
echo $pass | passwd --stdin $Name
echo "密码设置成功"
else
echo "两次输入的密码不一致,请重新输入"
mmyz
fi
else
echo "密码不符合条件"
mmyz
fi
fi
fi
}
tc(){
if [ "$Name" = "exit" -o "$pas" = "exit" -o "$pass" = "exit" -o "$repass" = "exit" ];then
exit
fi
}
hs