小编nfa*_*rar的帖子

Bash 函数装饰器

在 python 中,我们可以使用自动应用和针对函数执行的代码来装饰函数。

bash 中是否有类似的功能?

在我目前正在处理的脚本中,我有一些样板文件来测试所需的参数并在它们不存在时退出 - 如果指定了调试标志,则显示一些消息。

不幸的是,我必须将这段代码重新插入到每个函数中,如果我想更改它,我将不得不修改每个函数。

有没有办法从每个函数中删除此代码并将其应用于所有函数,类似于 python 中的装饰器?

bash function

15
推荐指数
2
解决办法
3913
查看次数

在 bash 脚本中正确使用 EXIT 和 ERR 陷阱

我正在编写一个 bash 脚本,随着我的学习,我了解了陷阱、信号、函数返回代码和其他我以前没有使用过的功能。

我可能正在错误地思考事情 - 我正在寻找一些建议。

我正在设置以下选项:

set -o errexit
set -o nounset
set -o noclobber
Run Code Online (Sandbox Code Playgroud)

我的 bash 脚本中有以下退出和错误陷阱:

# Error handler. This function is called anytime an ERR signal is received.
# This function should never be explictly called.
function _trap_error () {
    if [ ! -v _VERBOSE ]; then
        echo "An error has occurred. Exiting."
    else
        _name="$0"                # name of the script
        _lastline="$1"            # argument 1: last line of error occurence
        _lasterr="$2"             # argument 2: error code of …
Run Code Online (Sandbox Code Playgroud)

bash exit trap error-handling

6
推荐指数
0
解决办法
7407
查看次数

Zsh 扩展语法

我一直在研究我的 zsh 配置,并且对 zsh 扩展语法的几个点感到困惑。其中很多内容都是基于我在以下资源中找到的内容:

配置

我当前的 zsh 配置如下所示:

~/.config/zsh/rcsentry
~/.zshenv               symlink -> ~/.config/zsh/rcsentry
~/.config/zsh/.zshenv   symlink -> ~/.config/zsh/rcsentry
~/.config/zsh/.zshrc    symlink -> ~/.config/zsh/rcsentry
~/.config/zsh/.zlogin   symlink -> ~/.config/zsh/rcsentry
~/.config/zsh/.zprofile symlink -> ~/.config/zsh/rcsentry
Run Code Online (Sandbox Code Playgroud)

我的 rcsentry 目前已被精简到最小状态,同时我试图准确理解它是如何工作的。目前它包含:

if [[ -o rcs ]]; then

    rcs_fn="${(%):-%1N}"
    rcs_fp="${(%):-%N}"

    echo "rcs_fn: $rcs_fn"
    echo "rcs_fp: $rcs_fp"

    if [[ "$rcs_fn" == ".zshenv" ]]; then

        echo "initializing XDG environment variables ..."
        export XDG_CACHE_HOME="${XDG_CACHE_HOME:=$HOME/.cache}"
        export XDG_CONFIG_HOME="${XDG_CONFIG:=$HOME/.config}"
        export XDG_DATA_HOME="${XDG_DATA_HOME:=$HOME/.local/share}"

        echo "initializing ZSH environment variables ..."
        export ZDOTDIR="${ZDOTDIR:=$XDG_CONFIG_HOME/zsh}"
    fi …
Run Code Online (Sandbox Code Playgroud)

zsh

5
推荐指数
1
解决办法
833
查看次数

在不退出 shell 的情况下停止 .bashrc

我的 .bashrc 文件是模块化的,我在其中进行了一些错误检查。在 bash 脚本中,我通常有一个函数 _errexit(或类似的东西),当我检测到错误并想要退出时调用它。

就我的 bashrc 文件而言,我不想退出(它会关闭外壳) - 但我确实想显示一条错误消息并立即停止处理。

任何想法这可能是什么?

bash error-handling

2
推荐指数
1
解决办法
5789
查看次数

标签 统计

bash ×3

error-handling ×2

exit ×1

function ×1

trap ×1

zsh ×1