如果 IF 语句在程序代码中,则使用 xargs

Tru*_*0ur 2 bash password xargs

有一个程序是这样的:

while true
do
    echo 'Your pass: '
    read password
    if [ $password == 'qwerty' ]; then 
        echo 'Nice!'
        break
    fi
done
Run Code Online (Sandbox Code Playgroud)

只有当程序有参数时,我才能使用xargs。但在这种情况下./program.sh password不起作用。我有一个密码列表,我需要将它们循环发送到该程序。

xargs -a list ./program.sh 不起作用。

ter*_*don 11

没有理由在xargs这里使用,您可以简单地执行以下操作:

while IFS= read -r password
do
    if [ "$password" = 'qwerty' ]; then 
        echo 'Nice!'
        break
    fi
done
Run Code Online (Sandbox Code Playgroud)

然后运行它:

./program.sh < list
Run Code Online (Sandbox Code Playgroud)

如果你真的想要xargs,你可以这样做:

for password do
  case "$password" in
    'qwerty')
      echo 'Nice!'
      ;;
  esac
done
Run Code Online (Sandbox Code Playgroud)

进而:

xargs -rd '\n' -a list ./program.sh
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`-a`、`-r` 和`-d` 都不是标准的`xargs` 选项。 (2认同)