IF文がプログラムコード内にある場合は、xargsを使用してください。

IF文がプログラムコード内にある場合は、xargsを使用してください。

次のプログラムがあります。

while true
do
    echo 'Your pass: '
    read password
    if [ $password == 'qwerty' ]; then 
        echo 'Nice!'
        break
    fi
done

私は利用できるパラメータプログラムにパラメータがある場合にのみ適用されます。ただし、この場合は機能しません./program.sh password。ループでプログラムに送信する必要があるパスワードのリストがあります。

xargs -a list ./program.sh動作しません。

ベストアンサー1

xargsここで使用する理由はありません。簡単に次のようにします。

while IFS= read -r password
do
    if [ "$password" = 'qwerty' ]; then 
        echo 'Nice!'
        break
    fi
done

次に実行します。

./program.sh < list

本当に欲しいなら、xargs次のようにすることができます。

for password do
  case "$password" in
    'qwerty')
      echo 'Nice!'
      ;;
  esac
done

それから:

xargs -rd '\n' -a list ./program.sh

おすすめ記事