次のようにシステムにログインするコマンドラインインターフェイスがあります。
$ cli -u username -p password
間違ったパスワードが指定された場合は、「無効な資格情報」というメッセージが表示され、正しいパスワードが入力されるのを待っても終了しません。正しいパスワードを入力すると、メッセージが表示されずにすぐにログインします。
ユーザー入力を待たずにパスワードが間違っている場合は、コマンドを終了したいと思います。
アイデアは、Credentialsキーワードを見つけて見つかったらコマンドを終了することです。
$ cli -u username -p password | grep Credentials
どうすればいいですか?
ベストアンサー1
背景
私はあなたのユーティリティを次のようにcli
モデル化しました。
$ cat cli
#!/bin/bash
while IFS= read -r line; do
if [ "$line" == "password" ]; then
break
else
echo 'Credentials incorrect'
fi
done
使用grep
grep -m1 ...
その後、最初の一致を見つけてブレークアウトを使用できます。メソッド-m1
は最初の一致後に停止します。
$ ./cli | grep -m 1 "Credential"
blah
Credentials incorrect
$
良いパスワード
$ ./cli | grep -m 1 "Credential"
password
$
使用sed
同様のアプローチが使用されますsed
。
$ ./cli | sed '/Credential/ q'
blah
Credentials incorrect
$
良いパスワード
$ ./cli | sed '/Credential/ q'
password
$