缩短读操作

缩短读操作

这是我当前的read操作,效果很好,但我想缩短:

echo "Please save your DB root password:" && read -s dbrp
echo "Please save your DB user password:" && read -s dbup

这就是我尝试缩短它但完全失败的方法(提示对我来说很重要):

echo "Please save your DB passwords (root, then non-root):" && read -s dbrp && echo "\n" && read -s dbup

它已经按照我的意愿排在一行,但我对此感到不舒服,因为:

  1. 有两个read -s命令,而不是只有一个。
  2. 我必须使用echo /n打破行,而我想打破没有它。

有什么办法可以改善这一点吗?

更新

我在那里使用时犯了一个错误echo(除了添加\n. Asread有它自己的提示添加选项:

read -sp "What's your DB root password?" dbrp
read -sp "What's your DB user password?" dbup

答案1

如果您愿意更改变量的名称并使您的代码特定于 bash(在和-s中可用;对于提示仅,使用类似 in 的方式),我认为以下内容是优雅且简单的:zshbash-pbashzshread 'var?prompt'ksh

for arg in root user; do
    IFS= read -rsp "Please enter your $arg password: " "dbr_$arg"
    echo
done

结果应该在变量$dbr_user和 中包含您的密码$dbr_root

注意你需要-rIFS=允许用户在密码中包含反斜杠或前导/尾随空格或制表符

等价zsh的:

for arg (root user) IFS= read -rs "dbr_$arg?Please enter your $arg password: "

相关内容