外壳相当于 Perl 的骰子



是否有 Perl 的 die 函数的 shell 等价物(在 bash 或 zsh 中)?

我想设置退出代码并在一行中打印一条消息。我知道我可以制作自己的简单功能,但我有点希望内置。

不,你需要两者 echoexit

只需像这样创建一个shell函数:

die() {
    [[ $1 ]] || {
        printf >&2 -- 'Usage:ntdie <message> [return code]n'
        [[ $- == *i* ]] && return 1 || exit 1
    }
    printf >&2 -- '%s' "$1"
    exit ${2:-1}
}

die "Oops, there's something wrong!n" 255

解释

    第一个参数是
  • 需要的消息,第二个可选参数是返回码:
  • ${2:-1}是一个 bash 参数扩展:如果缺少第二个参数,它exit 1
  • 在 shell 中,1FALSE 相同 (1 => 255)
  • 在现代 bash 中,die() { } 是首选的旧function die {}
  • 像麦克斯韦一样将 STDERR 重定向到 STDOUT,这不是最佳实践,相反,我直接重定向到 STDERR(就像perl一样
  • 如果要在交互式 shell 中使用它,请将其放入 ~/.bashrc 中,然后source ~/.bashrc
  • 如果要在脚本中使用它,可以在脚本中source ~/.bashrc或手动放置。
  • [[ $- == *i* ]]测试您是否在交互式外壳中

相关内容

  • 没有找到相关文章

最新更新