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

관련 정보