在bash中,当使用stdin执行脚本时,如何自动输入值?

时间:2016-12-25 20:41:18

标签: bash

我有一个二进制文件,要求用户输入一些值,如下所示:

./binary
Please enter some value: 

我想自动执行此任务,并在循环中为二进制文件提供多个值:

for i in (1...1000)
do
./binary 
// Some function to give $i as a value
done

你有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

for i in {1..1000}
do
    echo $i | ./binary 
done

答案 1 :(得分:0)

因为它是bash,所以这里有一个字符串。

for i in {1..1000}; do
  ./binary <<< "$i"
done

选择是否重定向或使用管道时,请考虑amount of data

回应您的评论:处理此问题的最佳方法是修改./binary,以便进行错误处理。我假设你不能给出这个名字,所以这就是我要做的事情。

对于具有此逻辑的./binary

#!/bin/bash

read var
if (( var == 4 )); then
  echo "OK"
  exit 0
else
  echo "NOT OK"
  exit 1
fi

此循环仅输出4

for i in {1..10}; do
  if [[ $( ./binary <<< $i ) == "OK" ]]; then
    echo $i
  fi
done

理想情况下,你不会捕获输出并在以后检查它,但如果你正在寻找一个特定的字符串(而不是退出代码),这是一种方法。