壳相当于Perl的死

时间:2012-12-03 20:25:16

标签: bash zsh exit-code

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

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

2 个答案:

答案 0 :(得分:2)

不,你需要两者 echoexit

答案 1 :(得分:2)

只需制作一个shell函数:

die() {
    [[ $1 ]] || {
        printf >&2 -- 'Usage:\n\tdie <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 parameter expansion:如果缺少第二个参数,则exit 1
  • 位于1FALSE相同(1 =&gt; 255)
  • 在现代中,die() { }首选为oldish function die {}
  • STDERR 重定向到Maxwell的 STDOUT 不是最佳做法,而是直接重定向到 STDERR (如{{1确实)
  • 如果您想在交互式外壳中使用它,请将其放在perl然后~/.bashrc
  • 如果您想在脚本中使用它,可以在脚本中source ~/.bashrc或手动放置。
  • source ~/.bashrc测试您是否处于交互式shell中