SHELL第五次作业

函数库文件定义:

创建一个函数库文件的过程非常类似于编写一个Shell脚本。脚本与库文件之间的唯一区别在于函数 库文件通常只包括函数,而脚本中则可以既包括函数和变量的定义,又包括可执行的代码。此处所说的可执行代码,是指位于函数外部的代码,当脚本被载入后,这些代码会立即被执行,毋需另外调用。

函数库文件的调用:

当库文件定义好之后,用户就可以在程序中载入库文件,并且调用其中的函数。在Shell中,载入库 文件的命令为“.”,即一个圆点,其语法如下: . filename 其中,参数filename表示库文件的名称,必须是一个合法的文件名。库文件可以使用相对路径,也可以使用绝对路径。另外,圆点命令和库文件名之间有一个空格。

一、online写一个脚本,判定给定的IP列表中的主机哪些在线。

方法一:使用函数传参(有参,无返回值)
online() {
  if ping -c 1 $1 &>/dev/null
  then
        echo "$1 is up"
  else
        echo "$1 is down"
  fi
}
 
for i in {120..150}
do
  online 172.16.200.$i
done
方法二:直接使用函数实现(无参数,无返回值)
online(){
 for i in {128..200};do
   if ping -c 1 172.25.254.$i $>/dev/null
   then
        echo "172.25.254.$i is up"
   else
        echo "172.25.254.$i is down"
   fi
 done
}
 
online

二、函数能够接受一个参数,参数为用户名; 判断一个用户是否存在 如果存在,就返回此用户的shell和UID;并返回正常状态值; 如果不存在,就说此用户不存在;并返回错误状态值。

user() {
  if id $1 &>/dev/null
  then
    echo "`grep ^$1 /etc/passwd | cut -d: -f3,7`"
    return 0
  else
    echo "$1 does not exist"
    return 1
 fi
}
 
read -p "please input username:" username
until [ "$username" = "quit" -o "$username" = "exit" -o "$username" = "q" ]
do
  user $username
  if [ $? == 0 ];then
        read -p "please input again:" username
  else
        read -p "no $username,please input again:" username
  fi
done

三、函数库文件:在一个脚本中调用另一个脚本中的函数。

使用 . filename来调用

. test.sh

四、利用递归求n的阶乘。

f()
{
        local n="$1"
        if [ "$n" -eq 0 ]
        then
          result=1
        else
          let "m=n-1"
          fact "$m"
          let "result=$n * $result"
        fi
}
f "$1"
echo "Factorial of $1 is $result"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值