Bash 与Perl'的Shell等价;让我们死吧

Bash 与Perl'的Shell等价;让我们死吧,bash,zsh,exit-code,shell,Bash,Zsh,Exit Code,Shell,Perl的die函数是否有shell等价物(bash或zsh) 我想设置退出代码并在单行中打印消息。我知道我可以制作自己的简单函数,但我希望有一个内置函数。不,两个都需要 echo和exit不,您需要两者 echo和exit只需制作一个shell函数,如下所示: die() { [[ $1 ]] || { printf >&2 -- 'Usage:\n\tdie <message> [return code]\n' [[ $- =

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

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

不,两个都需要
echo
exit
不,您需要两者
echo
exit
只需制作一个
shell
函数,如下所示:

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

    printf >&2 -- '%s' "$1"
    exit ${2:-1}
}
解释

  • 第一个参数是所需的消息,第二个可选参数是返回代码:
  • ${2:-1}
    是一个bash:如果缺少第二个参数,它将
    退出1
  • 在中,
    1
    FALSE
    (1=>255)相同
  • 在现代中,
    die(){}
    作为旧的
    函数die{}
  • 像Maxwell那样重定向STDERRSTDOUT不是最佳实践,相反,我直接重定向到STDERR(像
    perl
    那样)
  • 如果您想在交互式shell中使用它,请将其放入
    ~/.bashrc
    中,然后放入
    source~/.bashrc
  • 如果要在脚本中使用它,可以在脚本中使用
    source~/.bashrc
    ,也可以手动放置它
  • [[$-==*i*]
    测试您是否在交互式shell中

只需制作一个
外壳
函数,如下所示:

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

    printf >&2 -- '%s' "$1"
    exit ${2:-1}
}
解释

  • 第一个参数是所需的消息,第二个可选参数是返回代码:
  • ${2:-1}
    是一个bash:如果缺少第二个参数,它将
    退出1
  • 在中,
    1
    FALSE
    (1=>255)相同
  • 在现代中,
    die(){}
    作为旧的
    函数die{}
  • 像Maxwell那样重定向STDERRSTDOUT不是最佳实践,相反,我直接重定向到STDERR(像
    perl
    那样)
  • 如果您想在交互式shell中使用它,请将其放入
    ~/.bashrc
    中,然后放入
    source~/.bashrc
  • 如果要在脚本中使用它,可以在脚本中使用
    source~/.bashrc
    ,也可以手动放置它
  • [[$-==*i*]
    测试您是否在交互式shell中

是的,这基本上是一个副本。但我在搜索时没有找到。不幸的是,搜索很糟糕。试试谷歌。可能是重复的,这基本上是重复的。但我在搜索时没有找到。不幸的是,搜索很糟糕。试试谷歌。我已经在问题中提到,我知道我可以实现一个功能。好的,但我的实现是真正完整、健壮和可用的。此外,我避免了您在其他帖子中看到的许多陷阱我可能会使用它,但从技术上讲,我没有回答这个问题;-)我已经在问题中提到,我知道可以生成函数。好的,但我的实现是真正完整、健壮和可用的。此外,我避免了您在其他帖子中看到的许多陷阱我可能会使用它,但从技术上讲,我没有回答这个问题;-)这实际上已经被说成是一个函数,但我给你怎么做=)完整性=)