相互接続コマンド間のデータ循環フローを実装するには?

相互接続コマンド間のデータ循環フローを実装するには?

コマンドの相互接続方法には2種類あります。

  1. パイプを使用して(標準出力を次のコマンドの標準入力に入れます)
  2. Teeを使用して(出力を複数の出力に接続)

これが可能かどうかわからないので、仮想接続タイプを描きました。

ここに画像の説明を入力してください。

コマンド間データの循環フローを実装する方法(たとえば、この擬似コードではコマンドの代わりに変数を使用します)

pseudo-code:

a = 1    # start condition 

repeat 
{
b = tripple(a)
c = sin(b) 
a = c + 1 
}

ベストアンサー1

循環I/Oループの実装tail -f

これは循環I / Oループを実装します。

$ echo 1 >file
$ tail -f file | while read n; do echo $((n+1)); sleep 1; done | tee -a file
2
3
4
5
6
7
[..snip...]

これは、前述のサインアルゴリズムを使用してループ入力/出力ループを実装します。

$ echo 1 >file
$ tail -f file | while read n; do echo "1+s(3*$n)" | bc -l; sleep 1; done | tee -a file
1.14112000805986722210
.72194624281527439351
1.82812473159858353270
.28347272185896349481
1.75155632167982146959
[..snip...]

ここでは、bcの正弦関数表現である浮動bc小数点演算を実行します。s(...)

変数を使用した同じアルゴリズムの実装

この特定の数学例では、循環I / O方法は必要ありません。簡単に変数を更新できます。

$ n=1; while true; do n=$(echo "1+s(3*$n)" | bc -l); echo $n; sleep 1; done
1.14112000805986722210
.72194624281527439351
1.82812473159858353270
.28347272185896349481
[..snip...]

おすすめ記事