Variable
縮短讀取操作
這是我目前的
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
它已經在我想要的一行中,但我對此並不滿意,因為:
- 有兩個
read -s
命令,而不是只有一個。- 我必須使用
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
.請注意,您需要
-r
andIFS=
以允許使用者在其密碼中包含反斜杠或前導/尾隨空格或製表符。
zsh
等價物:for arg (root user) IFS= read -rs "dbr_$arg?Please enter your $arg password: "