我想运行一个命令,例如
echo "foobar";
每个命令后,由用户输入。
两种情况:
如何完成上述两种情况?
注意:我不想为此目的使用提示,(保留PS1变量)。
答案 0 :(得分:15)
正如l0b0建议的那样,您可以使用PROMPT_COMMAND
执行第二次请求,而不必触及PS1
。
要完成第一个请求,您可以trap
DEBUG
伪信号:
trap 'echo "foobar"' DEBUG
答案 1 :(得分:9)
对于第二部分,您可以使用declare -r PROMPT_COMMAND="echo 'foobar'"
:它在显示提示之前执行。请注意,不会为例如管道或命令组中的每个命令运行它。
请注意,任何解决方案都有可能使用户陷入困境,因此理想情况下,您应该只调用不输出任何内容的命令(否则任何输出处理几乎不可能),并且用户无法使用(避免它们伪造或破坏输出。)