创建了一个简单的shell文件,其中包含:
read -p ThePrompt TheSomthing echo $TheSomething
运行它,它会返回
-ksh[1]: read: no query process
我试过单引号,双引号,手册页特别指出“-p”是使用提示符,但它对我不起作用。有人能告诉我我做错了什么吗?谢谢!
ecr0jaav1#
在Ksh中,你可以使用以下格式:echo "ThePrompt\c" read TheSomthing echo $TheSomething
echo "ThePrompt\c" read TheSomthing echo $TheSomething
wfsdck302#
Google的man page:-un和-p选项分别导致从文件描述符n或当前协同进程读取输入(有关此的注解,请参阅上面的协同进程)。如果使用-s选项,则将输入保存到历史文件。要使用提示符,请改为这样写:
read TheSomething?'ThePrompt'
lc8prwob3#
我在周围发现了一个词:echo -n 'prompt:“read input 1 echo -n”提示符:'读取输入2. . .我不知道为什么-p不能像手册页中描述的那样工作。如果有人有见解,请回复。谢谢!
ql3eal8s4#
很抱歉重新提出这个问题,但我用KSH编写shell脚本,所以我也处于同样的困境,直到我提出这个问题。我捕捉单个字符的解决方案:
$> echo -e "My prompt: \c" ; read -n 1 -s -r FOO ; echo -e "\b" My prompt: $> echo $FOO d $>
对于较长的字符串,请从读取命令中删除“-n 1”:
$> echo -e "My prompt: \c" ; read -s -r FOO ; echo -e "\b" My prompt: $> echo $FOO this is my entry!!! $>
很抱歉,这是你要找的页面!
sc4hvdpw5#
我也遇到了同样的问题,找到了这篇文章。奇怪的是:在服务器A上,此语法工作正常read -p "Prompt" -e -n 2 answer在服务器B上,我得到错误:-ksh: read: no query process两台服务器都运行Redhat 7.9和ksh 93。保存RPM和内核的版本。尽管这是一个ksh脚本,但似乎服务器A使用的是read. Wierd的bash版本。-n选项的行为也有所不同。在serve A(bash)上,输入N会用N填充变量answer,同时,它会从输入中去掉所有空格。在服务器B上,键入N将变量answer填充为N\r。我的解决方案在两个服务器上都有效:read -n 2 answer?'Prompt '``` answer=$( echo $answer | tr -d '[:cntrl:][:blank:]' )其中read是@abacabadabacaba描述的格式tr命令删除-d所有控制字符[:cntrl:]和所有白色[:blank:]
read -p "Prompt" -e -n 2 answer
-ksh: read: no query process
-n
read -n 2 answer?'Prompt '``` answer=$( echo $answer | tr -d '[:cntrl:][:blank:]' )
-d
[:cntrl:]
[:blank:]
5条答案
按热度按时间ecr0jaav1#
在Ksh中,你可以使用以下格式:
echo "ThePrompt\c" read TheSomthing echo $TheSomething
wfsdck302#
Google的man page:
-un和-p选项分别导致从文件描述符n或当前协同进程读取输入(有关此的注解,请参阅上面的协同进程)。如果使用-s选项,则将输入保存到历史文件。
要使用提示符,请改为这样写:
lc8prwob3#
我在周围发现了一个词:
echo -n 'prompt:“read input 1 echo -n”提示符:'读取输入2. . .
我不知道为什么-p不能像手册页中描述的那样工作。如果有人有见解,请回复。
谢谢!
ql3eal8s4#
很抱歉重新提出这个问题,但我用KSH编写shell脚本,所以我也处于同样的困境,直到我提出这个问题。
我捕捉单个字符的解决方案:
对于较长的字符串,请从读取命令中删除“-n 1”:
很抱歉,这是你要找的页面!
sc4hvdpw5#
我也遇到了同样的问题,找到了这篇文章。奇怪的是:在服务器A上,此语法工作正常
read -p "Prompt" -e -n 2 answer
在服务器B上,我得到错误:
-ksh: read: no query process
两台服务器都运行Redhat 7.9和ksh 93。保存RPM和内核的版本。尽管这是一个ksh脚本,但似乎服务器A使用的是read. Wierd的bash版本。
-n
选项的行为也有所不同。在serve A(bash)上,输入N会用N填充变量answer,同时,它会从输入中去掉所有空格。
在服务器B上,键入N将变量answer填充为N\r。
我的解决方案在两个服务器上都有效:
read -n 2 answer?'Prompt '``` answer=$( echo $answer | tr -d '[:cntrl:][:blank:]' )
其中read是@abacabadabacaba描述的格式
tr命令删除
-d
所有控制字符[:cntrl:]
和所有白色[:blank:]
野性