在Bash中,如何在读取后输出新行?

时间:2016-04-01 01:35:09

标签: linux bash newline

当前代码:

echo -n "password: "
read -es password
echo -n "ok"

linux中的行为:

password: ok

我们可以这样做:

password:
ok

感谢, wxie

以下内容可行:

read -p "password: " -es password
echo
echo "ok"

4 个答案:

答案 0 :(得分:3)

也许:

read -p "password: " -es password
printf "\n ok \n"

答案 1 :(得分:2)

如果你想在OK之前换行,那应该这样做: echo -e" \ nok" -e可以解释反斜杠代码。

答案 2 :(得分:1)

来自echo的手册页:-n do not output the trailing newline。尝试没有选项。

答案 3 :(得分:0)

我们可以在printf中使用\ n as a line separator,在“ ok”之后还有一行用于填充的空白行,您可以删除

printf "password: " && read -es password && printf "\n\nok\n"

如果以此方式保存密码,该密码仍将以纯文本形式包含在$ password变量中,则下面的字符串将公开打印该密码。

printf "$password"

您的代码示例使用echo,应使用printf,有关echo符合POSIX的要求articles,echo可以像Greg Tarsa指出的那样工作,但并非所有的echo版本都使用-e或- n

我发现使用printf 可读,其他“语言”也有类似的命令,例如PRINT, print, println, print() and others

如果您需要使用echo,可以

echo -n "password: " && read -es password && echo -e "\nok\n"