Variable

縮短讀取操作

  • January 16, 2018

這是我目前的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.read有它自己的提示添加選項:

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

如果您願意更改變數的名稱並使您的程式碼特定於 bash(在and-s中可用;僅用於提示,使用類似 in ),我認為以下內容優雅而簡單:zsh``bash``-p``bash``zsh``read '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.

請注意,您需要-randIFS=以允許使用者在其密碼中包含反斜杠或前導/尾隨空格或製表符

zsh等價物:

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

引用自:https://unix.stackexchange.com/questions/417451