我有一個簡單的 CLI 工具,要求輸入主密碼,并且$USER $PASSWORD只有在主密碼正確時才列印字串。
如何重現?
這是一個僅用于演示我的用例的腳本,真正的腳本實際上是我無法控制的 CLI 工具:
#!/usr/bin/env sh
printf "Enter master password: "
read -s password
echo
[ "$password" == "MasterPassword" ] && echo "user1 Passw0rd!"
使用示例:
$ ./my-cli-tool
Enter master password: ********
user1 Passw0rd!
問題
我不想將密碼 ( Passw0rd!) 列印在螢屏上。我只想列印用戶 ( user1),只需將密碼 ( Passw0rd!) 復制到剪貼板(假設使用xclip -sel clipboard)。
我試過什么?
如果第一行 ( Enter master password) 不存在,我會這樣做:
./my-cli-tool |
while read -r USER PASSWORD
do
echo $USER
echo -n $PASSWORD | xclip -sel clipboard
done
但我的問題是我應該在提示要求時輸入主密碼,所以第一行總是列印出來。我試過運行./my-cli-tool | tail -1:提示沒有顯示,雖然如果我輸入主密碼,它只會列印user1 Passw0rd!,所以我可以執行上面的命令將密碼復制到剪貼板。
問題
你有什么想法:
- 始終在螢屏上顯示主密碼提示
- 只列印用戶
- 將密碼復制到剪貼板
預期產出
基本上,我想要那種輸出:
$ ./my-cli-tool | solution
Enter master password: ********
user1
并已Passw0rd!復制到我的剪貼板中。
uj5u.com熱心網友回復:
我只是稍微修改了您的答案-
./my-cli-tool | {
x=$(dd bs=1 count=1 2>/dev/null)
while [ "$x" != : ]; do
printf %c "$x";
x=$(dd bs=1 count=1 2>/dev/null)
done
printf %s ": "
while read -r USER PASSWORD
do
echo $USER
echo -n $PASSWORD | xclip -sel clipboard
done
}
讓我知道它是否有效。
編輯:更新的邏輯。用途dd.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475846.html
上一篇:在csv中聚合資料
