read -p 返回使用 Korn Shell KSH "read: no query process"



创建了一个简单的shell文件,其中包含以下内容:

read -p ThePrompt TheSomthing
echo $TheSomething

运行它,它返回

-ksh[1]: read: no query process

我试过在ThePrompt周围使用单引号和双引号,手册页上专门说"-p"是使用提示,但对我不起作用。有人能告诉我做错了什么吗?谢谢

在Ksh中,您可以使用以下格式:

echo "ThePromptc" read TheSomthing echo $TheSomething

从谷歌主页:

-un和-p选项分别导致从文件描述符n或当前协同进程读取输入(请参阅上面的协同进程以获取对此的评论)。如果使用-s选项,则输入将保存到历史文件中。

要使用提示,请改为:

read TheSomething?'ThePrompt'

我发现了一个词:

echo-n'提示:'读取输入1echo-n'提示:'读取输入2。。.

我不知道为什么-p不能像手册页中描述的那样工作。如果有人有真知灼见,请回复。

谢谢!

很抱歉再次提出这个问题,但我在KSH中编写shell脚本,所以我也陷入了同样的困境,直到我遇到这个问题。

我捕获单个字符的解决方案:

$> echo -e "My prompt: c" ; read -n 1 -s -r FOO ; echo -e "b"
My prompt:
$> echo $FOO
d
$>

对于较长的字符串-n1";从读取命令:

$> echo -e "My prompt: c" ; read -s -r FOO ; echo -e "b"
My prompt:
$> echo $FOO
this is my entry!!!
$>

我希望这就是你想要的。。。干杯

我遇到了同样的问题,找到了这篇文章。奇怪的是:在服务器A上,此语法运行良好
read -p "Prompt" -e -n 2 answer
在服务器B上,我收到错误:
-ksh: read: no query process
两台服务器都运行Redhat7.9和ksh 93。保存RPM的版本&内核尽管这是一个ksh脚本,但服务器a似乎使用了bash版本的read。维尔德

-n选项的表现也有所不同
在serve A(bash)中,键入N将变量answer填充为N。此外,它还去掉了输入中的任何空格
在服务器B上,键入N将变量答案填充为N\r

我的解决方案,适用于两台服务器:
read -n 2 answer?'Prompt '``` answer=$( echo $answer | tr -d '[:cntrl:][:blank:]' )

其中read是@abacabadabacaba描述的格式
tr命令删除-d所有控制字符[:cntrl:]和所有空白[:blank:]

#Wierdness

最新更新