編集する:私はそれがそれとは何の関係もなく、$()
単に使用の結果であることを知っていますecho *
。だから脱出する方法が必要でしたecho
。
/etc/passwd
合計を比較してパスワードのないユーザーを確認するスクリプトを作成しています/etc/shadow
。
これまで私は以下を持っています:
cat /etc/passwd | while read -r line ; do
user=$(echo $line | cut -d ":" -f 1)
password=$(cat /etc/shadow | grep $user | cut -d ":" -f 2)
echo $password
done
問題は、私のgrepの結果が*
パスワードフィールドである場合(パスワードを持たないすべてのユーザーに対して)ls *
実行されるようです。たとえば、
なぜこのようなことが起こるのか混乱しています。ここで何が起こっているのかを説明できる人はいますか?画像の下部に暗号化されたパスワードを含む回答は予想される動作です。パスワードのない項目の場合は、パスワードを取得したいと思います*
。
答え1
echo "$password"
これにより、シェルグローバル変数を呼び出すことなく変数(ここ*
)を挿入できます。