专业编程基础技术教程

网站首页 > 基础教程 正文

shell中常见的实用函数 shell中常见的实用函数有哪些

ccvgpt 2024-10-12 14:07:59 基础教程 7 ℃


背景

Bash和sh不像Perl那样提供内置的die命令,但在脚本中使用终止函数是很常见的。你只需自己编写一个即可。大多数编写终止函数的人喜欢保持简单。通常有两种常见的类型:一种只接受要打印的消息,另一种接受消息和退出状态值。

shell中常见的实用函数 shell中常见的实用函数有哪些

# Usage: die message ...
die() {
  printf '%s\n' "$*" >&2
  exit 1
}
# Usage: die exit_status message ...
die() {
  rc=$1
  shift
  printf '%s\n' "$*" >&2
  exit "$rc"
}

复杂的定制化版本

有些人喜欢更复杂的函数。如果你喜欢更复杂的函数,这里有几个变体:

##
# warn: 向stderr打印消息。
# 用法:warn "格式" ["参数"...]
#
warn() {
  local fmt=$1
  shift
  printf "脚本名称:$fmt\n" "$@" >&2
}

###
### 以下的三个"die"函数
### 依赖于上述的"warn"函数。
###

##
# die(简单版本):向stderr打印消息,并以最近命令的退出状态退出。
# 用法:some_command || die "消息" ["参数"...]
#
die () {
  local st=$?
  warn "$@"
  exit "$st"
}

##
# die(显式状态版本):向stderr打印消息,并以给定的退出状态退出。
# 用法:if blah; then die 状态码 "消息" ["参数"...]; fi
#
die() {
  local st=$1
  shift
  warn "$@"
  exit "$st"
}

##
# die(可选状态版本):向stderr打印消息,并以给定的状态或最近命令的退出状态退出。
# 用法:some_command || die [状态码] "消息" ["参数"...]
#
die() {
  local st=$?
  if [[ $1 != *[^0-9]* ]]; then
    st=$1
    shift
  fi
  warn "$@"
  exit "$st"
}
##
# warn:向stderr打印消息。
# 用法:warn "消息"
#
warn() {
  printf '%s\n' "$@" >&2
}

##
# die(可选状态版本):向stderr打印消息,并以给定的状态或最近命令的退出状态退出。
# 用法:some_command || die "消息" [状态码]
#        some_command && die "消息" [状态码]

die() {
  local st=$?
  case $2 in
    *[^0-9]*|'') :;;
    *) st=$2;;
  esac
  warn "$1"
  exit "$st"
}



最后


如果你想学习如何编写更加健壮和可靠的 Shell 脚本,减少生产环境中的错误和故障,那么关注我吧!我会分享 Shell 编程的最佳实践和建议,帮助你提高 Shell 脚本的鲁棒性和可维护性。如果你想深入了解 Shell 编程的实际应用和技巧,可以关注我的《Shell 脚本编程最佳实践》专栏,里面有我在一线互联网大厂的实际生产经验和最佳实践,帮助你高效完成各种自动化任务。

Tags:

最近发表
标签列表