Terminal

read -s 通過腳本給出錯誤

  • May 11, 2019

我正在嘗試從使用者那裡讀取密碼,我使用了-s靜默標誌,但read -s不能從腳本中工作,但如果我從終端手動執行,它就可以工作。

錯誤詳情

project.sh: 3: read: Illegal option -s
you entered 

程式碼

maddy@ElementalX:~/Desktop$ cat project.sh 
#!/usr/bin/sh

read -s -p "Enter Password: " pswd
echo "you entered $pswd"
maddy@ElementalX:~/Desktop$ 

-s內置實用程序的read選項不是標準選項,不太可能在sh. 同樣,-p提供自定義提示的選項不太可能由通用sh.

bash相反,執行您的腳本,它read確實支持-s從終端讀取而不回顯輸入的字元(以及-p)。最簡單的方法是將#!-line 更改為指向bash系統上的執行檔。

在非bashshell 中,您可能會得到類似的效果

printf 'Enter password: ' >&2

stty -echo
read password
stty echo

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