2016-12-25 10 views
1

私は、いくつかの値を入力するようユーザーに要求したバイナリを持っている。このように:bashでは、標準入力でスクリプトを実行すると自動的に値を入力する方法は?

./binary 
Please enter some value: 

私はこの作業を自動化したいと思いますし、ループ内のバイナリいくつかの値与える:

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

ドゥをあなたは何か考えている?

おかげ

答えて

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 

は、理想的には、出力をキャプチャしていないでしょうし、後でそれを確認していますが、特定の文字列(というよりも終了コード)を探しているなら、これは移動するための方法です。

+0

Okと最後の質問:どのように私は選択されたバイナリの出力を表示できますか? ./binary some_numberからのメッセージ) – adrTuIPKJ44

+0

これはほんのわずかな変更であるため、この回答を編集します。しかし一般的には、あなたはあなたの質問を修正するか、別の質問をするべきです。 –

+0

ありがとう! – adrTuIPKJ44

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

私の前にループ式に "$"がありません。私の投稿でミスを犯しました。私はちょうど編集しましたが、$がなくてもエラーが発生しました: "予期しないトークンの近くでbash:構文エラー'' – adrTuIPKJ44

+0

私の例では括弧はありません;私は{}を使用しています:) – negacao

関連する問題