相关疑难解决方法(0)

有状态的 bash 函数

我想在 Bash 中实现一个函数,它在每次调用时增加(并返回)一个计数。不幸的是,这似乎很重要,因为我在子 shell 中调用该函数,因此它无法修改其父 shell 的变量。

这是我的尝试:

PS_COUNT=0

ps_count_inc() {
    let PS_COUNT=PS_COUNT+1
    echo $PS_COUNT
}

ps_count_reset() {
    let PS_COUNT=0
}
Run Code Online (Sandbox Code Playgroud)

这将按如下方式使用(因此我需要从子shell调用函数):

PS1='$(ps_count_reset)> '
PS2='$(ps_count_inc)   '
Run Code Online (Sandbox Code Playgroud)

这样,我就会有一个带编号的多行提示:

> echo 'this
1   is
2   a
3   test'
Run Code Online (Sandbox Code Playgroud)

可爱的。但由于上述限制不起作用。

一个无效的解决方案是将计数写入文件而不是变量。但是,这会在多个同时运行的会话之间产生冲突。当然,我可以将 shell 的进程 ID 附加到文件名。但我希望有一个更好的解决方案,不会让我的系统因大量文件而混乱。

bash prompt shell-script function subshell

17
推荐指数
2
解决办法
1798
查看次数

标签 统计

bash ×1

function ×1

prompt ×1

shell-script ×1

subshell ×1