Use xargs se as instruções IF estiverem dentro do código do programa

2

Existe um programa como este:

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

Eu posso usar xargs somente se o programa tiver argumentos. Mas, neste caso, ./program.sh password não funciona. Eu tenho uma lista de senha e preciso enviá-los em loop para este programa.

xargs -a list ./program.sh não funciona.

    
por TrueBad0ur 19.04.2018 / 11:35

1 resposta

11

Não há razão para usar xargs aqui, você pode simplesmente fazer:

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

E, em seguida, execute-o como:

./program.sh < list

Se você realmente quiser xargs , pode fazer algo como:

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

E então:

xargs -rd '\n' -a list ./program.sh
    
por 19.04.2018 / 11:42