Linux Shell脚本,在回显消息后在同一行上读取
遵循我正在执行的shell脚本Linux Shell脚本,在回显消息后在同一行上读取,linux,bash,shell,Linux,Bash,Shell,遵循我正在执行的shell脚本 #!/bin/sh echo "Enter [y/n] : " read opt 它的产量是 Enter [y/n] : Y 我希望变量应该在同一行上读取,如下所示 Enter [y/n] : Y 我想应该很简单,但我对bash脚本还不熟悉 解决方案:read-p“输入[y/n]:”opt 从帮助阅读: -p prompt output the string PROMPT without a trailing newline before
#!/bin/sh
echo "Enter [y/n] : "
read opt
它的产量是
Enter [y/n] :
Y
我希望变量应该在同一行上读取,如下所示
Enter [y/n] : Y
我想应该很简单,但我对bash脚本还不熟悉 解决方案:read-p“输入[y/n]:”opt
从帮助阅读:
-p prompt output the string PROMPT without a trailing newline before
attempting to read
或者!(晚一点比较好)
舍邦#/bin/sh
意味着您正在为历史上的Bourne shell(我认为在Solaris等系统上仍然可以找到)编写代码,或者更可能是为POSIX定义的标准shell语言编写代码。这意味着read-p
和echo-n
都不可靠
标准/便携式解决方案是:
printf 'Enter [y/n] : '
read -r opt
(-r
防止对\
进行特殊处理,因为read
通常在它位于行的末尾时接受它作为行的延续。)
如果您知道您的脚本将在具有Bash的系统上运行,您可以将shebang更改为#/bin/bash
(或#!/usr/bin/env bash
)并使用所有高级bash功能。(许多系统都将/bin/sh
符号链接到bash
,因此它可以以任何一种方式工作,但依赖于这一点是不好的做法,bash
在名为sh
的情况下执行时实际上禁用了它自己的一些功能)在echo中使用-n句柄,这将避免尾随换行符
echo -n "Enter [y/n] : "
read opt
@Aaron谢谢你格式化这篇文章。这是我的第一篇文章。我会确保我的其他帖子格式正确。这是一个很好的解释。我在RHEL 5.5 BTW上。
printf 'Enter [y/n] : '
read -r opt
echo -n "Enter [y/n] : "
read opt