[rlug] Pipe/redirect

Dumitru Ciobarcianu dumitru.ciobarcianu at ines.ro
Sat Jul 28 19:36:22 EEST 2018


On 28-Jul-18 18:25 PM, MOROIANU Dragos wrote:
>  Comenzile pe care vreau sa le trimit programului, depind de raspunul pe care-l primesc de la el, deci vreau sa pastrez interactivitatea, programul sa nu se inchida dupa primul set de comenzi.Este posibil sa tin un 'pipe' deschis intre 2 comenzi echo, eventual folosind un fisier pipe?

Disclaimer: Nu executa niciodată chestii pe care ți le dau diverși de pe
net fară să fii sigur că înțelegi ce se întâmplă acolo, inclusiv ce este
mai jos, nu pot garanta că nu îți strică sistemul, îmbolnăvește pisica, etc.

Pui asta într-un script. Dacă nu este într-un script îți va închide
shell-ul curent. Nu arată prea frumos dar nu am stat să îl bibilesc
acum, doar vrea să arate o idee.

Pipe-urile nu sunt bidirecționale în Linux deci trebuie să facem un
artificiu și să legăm standard input și standard output între cele două
programe. Efectul secundar la chestia asta este că nu mai ai output de
loc către terminal, de unde și mizeria cu tee și echo >>fisier.txt ca să
poți urmării ce se întâmplă acolo. Sunt convins că există o soluție mai
elegantă la treaba asta.

# --- CUT HERE ---
coproc (
  echo "1+2" |tee fisier.txt
  read raspuns ; echo $raspuns >>fisier.txt
  echo "$raspuns+3" | tee -a fisier.txt
  read rezultat ; echo $rezultat >>fisier.txt
)
exec bc  <&${COPROC[0]} >&${COPROC[1]}

# --- CUT HERE ---


Dumitru "ph33r teh bash powah!" C.

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus





More information about the RLUG mailing list