suがパスワードを何度も尋ねるようにします。

suがパスワードを何度も尋ねるようにします。

suパスワードが間違っている場合(このように)、もう一度尋ねる方法はありますかsudo

最初に私はこう考えた。

while ! su -c foo; do
  read -n 1 -p "Retry(y/n)?" ch
  if [[ "$ch" != "y" ]]; then
    break
  fi
done

ただし、foo場合によっては1を返す可能性があるため、間違ったパスワードを入力したかfoo失敗したかを検出することはできません。

ベストアンサー1

回避策として、以下を提案します。

#!/bin/bash
while ! su -c "foo; exit 0"; do
    read -n 1 -p "Retry? (y/n) " ch
    [[ "$ch" != "y" ]] && break   # This does the same in fewer lines
done

foo他の終了コードがあってもゼロ値を返します。
警告する:fooこの回避策(少し見苦しい)では、終了コードを確認できません。プロジェクトに必要かどうかはわかりません。

おすすめ記事