Linuxでパスワードボックスを作成するには? [閉鎖]

Linuxでパスワードボックスを作成するには? [閉鎖]

スクリプトがありますが見つかりません。エラー:

#!/bin/bash

data=$(tempfile 2>/dev/null)

trap "rm -f $data" 0 1 2 5 15

dialog --title "Password" \
--clear \
--passwordbox "Enter your password" 10 30 2> $data

ret=$?

case $ret in
 0)
        echo "Password is $(cat $data)";;
 1)
        echo "Cancel pressed.";;
 255)
        [ -s $data ] && cat $data || echo "ESC pressed.";;
esac

しかし、正しく動作しません。

[root@localhost Desktop]# ./getpasswd1.sh 
./getpasswd1.sh: line 7: $data: ambiguous redirect
Cancel pressed.

ベストアンサー1

一時ファイルに保存したくありません。必ずしも必要ではありませんが、少しクリエイティブなミックスが必要です。

data=$(dialog --passwordbox "Enter your password" 10 30 3>&1- 1>&2- 2>&3-)

それがすることはfd 1と2を変えるだけです(「X>&Y-」構成は「fd Yを動かしてfd Xになる」ことを意味します。はい、混乱しますが、それはすべてです)。これにより、ダイアログボックスが標準エラー(最終的に端末で)に記録され、パスワードは変数で終わります$data

おすすめ記事