shell脚本专家指南笔记#2.使用函数库

本文是《shell脚本专家指南》的学习笔记,重点介绍了如何使用和创建库函数。通过导入库文件,可以方便地调用预先定义的函数,例如检查OSTYPE变量。文中提到了三个常用的库函数,包括判断字符串尾部字符、检测节点在线状态以及初始化系统变量。在调用库函数时,可以使用'source'或'.'进行加载。此外,还提及了Linux系统自带的函数库/etc/init.d/functions。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##
# 本文为《shell脚本专家指南》学习笔记。
##

2.1. 使用库
可以将常用函数,封装如库文件中,在需要用对应函数时,只要导入对应库文件即可。
示例:通过导入库文件,就可以引用已写好的函数。
比如,导入OSTYPE环境变量。

#!/bin/echo WARN: this library should be sourced!
# ostype(): import OSTYPE variable.
ostype() {
  osname=`uname -s`
  OSTYPE="UNKNOWN"
  case $osname in
    "FreeBSD") OSTYPE="FREEBSD"
    ;;
    "SunOS") OSTYPE="SOLARIS"
    ;;
    "Linux") OSTYPE="LINUX"
    ;;
  esac
  return 0
}


centos6.5版本,自带OSTYPE变量,为linux-gnu。
导入库后,调用ostype函数,OSTYPE变量变为 LINUX,表示库导入成功。

#!/bin/bash
. ./libmy.sh
ostype
echo $OSTYPE


2.2. 常用库
shell脚本专家指南一书中,推荐了三个作者常用库。
示例:

#!/bin/echo WARN: this library should be sourced!

# if the number is even, return 1.
evenodd() {
  LAST_DIGIT=`echo $1 | sed 's/\(.*\)\(.\)$/\2/'`
  case $LAST_DIGIT in
    2|4|6|8|0)
      return 1
    ;;
    *)
      return 0
    ;;
  esac
}

# if the node is online, return 1.
isalive() {
  NODE=$1
  $PING -c 3 $NODE > /dev/null 2>&1
  if [ $? -eq 0 ]
  then
    return 1
  else
    return 0
  fi
}

# setup variables, NAME PING ...
setupenv() {
  ostype
  NAME=`uname -n`
  case $OSTYPE in
    "LINUX") PING=/bin/ping ;;
    "FREEBSD") PING=/sbin/ping ;;
    "SOLARIS") PING=/usr/sbin/ping ;;
  esac
}

三个函数分别是:
    获得输入字符串,最后一个字符是否为偶数。
    判断一个节点是否在线。
    初始化NAME PING 变量,这个原文中,在调用ostype前做了判断。
        如果OSTYPE变量为空,才调用ostype函数。因为centos默认有一个
        OSTYPE变量,值为Linux-gnu,故此处直接调用了ostype函数。
        原文的PING在LINUX系统下,路径为/usr/sbin/ping,而centos中
        为/bin/ping,此处也做了修改。
另外,作者推荐了一个linux自带的函数示例库,为/etc/init.d/functions.sh,
    在centos6.5中,为/etc/init.d/functions,现在我能力不够,等以后再做研究。

 

2.3. 调用库
    source lib.sh
    或者
    . lib.sh
示例:

#!/bin/bash
# export functions.
. ./libmy.sh

setupenv

evenodd 123456
echo $?

isalive host1
echo $?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值