Bash:在新行上设置新命令而不执行

Bash:在新行上设置新命令而不执行,bash,scripting,Bash,Scripting,我试图编写一个BASH脚本来输出一个部分完成的命令,然后我可以向其中添加参数,点击ENTER,然后运行。我希望这完全在BASH中实现 e、 g ~>。/test.sh ~>ls-al 我发现唯一一个关闭的变量是PROMPT_COMMAND变量,当在test.sh中设置为“ls-al”时,它将在脚本退出后立即执行 有没有办法停止立即执行,这样我就可以添加,比如说,*.log?怎么样 read -e -p"$PWD> " -i"ls -al " cmd; eval "$cmd" 是的,那正

我试图编写一个BASH脚本来输出一个部分完成的命令,然后我可以向其中添加参数,点击ENTER,然后运行。我希望这完全在BASH中实现

e、 g

~>。/test.sh
~>ls-al
我发现唯一一个关闭的变量是PROMPT_COMMAND变量,当在test.sh中设置为“ls-al”时,它将在脚本退出后立即执行

有没有办法停止立即执行,这样我就可以添加,比如说,*.log?

怎么样

read -e -p"$PWD> " -i"ls -al " cmd; eval "$cmd"

是的,那正是我想要的,谢谢!但是请注意,该命令在新的shell中运行,而不是在当前shell中运行。@chepner:Ok我修改了建议,改为使用
eval
。与其将
cmd
显示为提示符的一部分,不如将其作为参数传递给
-I
选项。这会将该值放在命令行本身上,用户可以对其进行编辑,并将其包含在
opt
@chepner的最终值中:谢谢您的提示。提问者没有指定他是否希望该部分可编辑,但命令变得更简单,所以我选择了它。我不明白为什么是重复的。答案是用C写的,不是Bash。@wjandrea这是完全相同的问题,如果有什么问题,应该在那里添加一个新的答案。“重复”不是指答案。现在我们在两个不同的地方找到了同一个问题的两个有效答案。
read -e -p"$PWD> " -i"ls -al " cmd; eval "$cmd"