微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在bash中每n个命令执行一次函数

我想制作一个程序,它将在bash中每n个命令执行一次。 例如,我希望用户在bash中为每5个命令回答一个问题。

我觉得这个函数只能用bash脚本实现,是我找不到合适的解决方法。 我不想编译一个新的bash,我认为这可以通过一个bash脚本来完成。 如果是这样,我必须改变bashrc?

在C#中的蛮力卡震动方法

使用Sublime运行Python时出错“系统找不到指定的文件

通过另一个程序给GUI应用程序提供input

Python 3.5 setup.py egg_info失败,错误代码1

您可以使用自定义函数在DEBUG中捕获DEBUG信号。

runcmd() { if (( n==5 )); then n=0; pwd; else ((n++)); fi; } trap 'runcmd' DEBUG

使用您的自定义命令或脚本更改pwd 。

trap 'handler' DEBUG在shell中运行每个命令之后, trap 'handler' DEBUG调用handler , 但在shell中按下输入时不会调用runcmd

编辑:感谢@kojro:你可以缩短这个功能

runcmd() { (( n++ % 5 )) || pwd; }

您可以使用PROMPT_COMMAND shell变量在每个用户命令(每次显示提示)后运行一个命令,并使用一个计数器来每五次执行一次:

PROMPT_COMMAND="if [ "$HELLO_COUNTER" -le 0 ]; then HELLO_COUNTER=5; echo 'Hello,world.'; else let --CTR; fi"

编辑:@kojiro在评论中有一个好主意,使用内置的LINENO变量而不是一个新的计数器,如

PROMPT_COMMAND='(( LINENO % 5 )) || echo "Hello world."'

我喜欢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐