在 bash 中交互式阅读行
Reading lines interactively in bash
我正在使用以下代码以交互方式从用户那里获取输入,
从而允许用户在不删除整行的情况下更改输入。
#! /bin/bash
while :
do
echo -n "prompt# "
read -e input
done
问题:
它还允许我删除我不想发生的 "prompt#"。
在任何情况下,我都不希望 "prompt# " 被用户删除。
我试过在 read
命令中使用各种选项,但无法弄清楚。
我怎样才能做到这一点?
编辑:
导致问题的事件顺序:
1. 我运行上面的脚本并输入"hello".
2. 然后我将光标移动到 'e' in "hello" 和 "pressed and held" back space 一段时间,导致删除了 "prompt# "
3. 如果你不输入任何字符,它工作正常,提示不会被删除,但如果你输入一个白色的 space 或任何字符,然后按返回 space,那么它会打乱提示。
看看下面的快照。
快照 :
来自 4ae1e1 的评论:
您应该使用 read 的内置提示支持,否则您只能靠自己了。
read -p 'prompt# ' -e input
我正在使用以下代码以交互方式从用户那里获取输入, 从而允许用户在不删除整行的情况下更改输入。
#! /bin/bash
while :
do
echo -n "prompt# "
read -e input
done
问题:
它还允许我删除我不想发生的 "prompt#"。
在任何情况下,我都不希望 "prompt# " 被用户删除。
我试过在 read
命令中使用各种选项,但无法弄清楚。
我怎样才能做到这一点?
编辑:
导致问题的事件顺序:
1. 我运行上面的脚本并输入"hello".
2. 然后我将光标移动到 'e' in "hello" 和 "pressed and held" back space 一段时间,导致删除了 "prompt# "
3. 如果你不输入任何字符,它工作正常,提示不会被删除,但如果你输入一个白色的 space 或任何字符,然后按返回 space,那么它会打乱提示。
看看下面的快照。
快照
来自 4ae1e1 的评论:
您应该使用 read 的内置提示支持,否则您只能靠自己了。
read -p 'prompt# ' -e input