如果 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

相关内容