Bash 与Perl'的Shell等价;让我们死吧
Perl的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' [[ $- =
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}
}
解释
- 第一个参数是所需的消息,第二个可选参数是返回代码:
是一个bash:如果缺少第二个参数,它将${2:-1}
退出1
- 在中,
与1
(1=>255)相同FALSE
- 在现代中,
作为旧的die(){}
函数die{}
- 像Maxwell那样重定向STDERR到STDOUT不是最佳实践,相反,我直接重定向到STDERR(像
那样)perl
- 如果您想在交互式shell中使用它,请将其放入
中,然后放入~/.bashrc
source~/.bashrc
- 如果要在脚本中使用它,可以在脚本中使用
,也可以手动放置它source~/.bashrc
测试您是否在交互式shell中[[$-==*i*]
外壳
函数,如下所示:
die() {
[[ $1 ]] || {
printf >&2 -- 'Usage:\n\tdie <message> [return code]\n'
[[ $- == *i* ]] && return 1 || exit 1
}
printf >&2 -- '%s' "$1"
exit ${2:-1}
}
解释
- 第一个参数是所需的消息,第二个可选参数是返回代码:
是一个bash:如果缺少第二个参数,它将${2:-1}
退出1
- 在中,
与1
(1=>255)相同FALSE
- 在现代中,
作为旧的die(){}
函数die{}
- 像Maxwell那样重定向STDERR到STDOUT不是最佳实践,相反,我直接重定向到STDERR(像
那样)perl
- 如果您想在交互式shell中使用它,请将其放入
中,然后放入~/.bashrc
source~/.bashrc
- 如果要在脚本中使用它,可以在脚本中使用
,也可以手动放置它source~/.bashrc
测试您是否在交互式shell中[[$-==*i*]