Bash Filedeskriptoren: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „==Schreibenden Deskriptor== ;anlegen *exec 5> /tmp/five ;rein schreiben *echo eins >&5 *echo zwei >&5 *echo drei >&5 ;ausgeben *cat /tmp/five ;aufheben *exec…“
 
Linkai.zhang (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
==Schreibenden Deskriptor==
= Schreibenden Deskriptor =
 
;anlegen
;anlegen
*exec 5> /tmp/five
*exec 5> /tmp/five
;rein schreiben
;rein schreiben
*echo eins >&5
*echo eins >&5
*echo zwei >&5
*echo zwei >&5
*echo drei >&5
*echo drei >&5
;ausgeben
;ausgeben
*cat /tmp/five  
*cat /tmp/five  
;aufheben
;aufheben
*exec 5>&-
*exec 5>&-
;führt zu Fehler
;führt zu Fehler
*echo vier >&5
*echo vier >&5
==Lesender Deskriptor==
 
= Lesender Deskriptor =  
 
;anlegen
;anlegen
*exec 7< /etc/hosts
*exec 7< /etc/hosts
;auslesen
;auslesen
*cat <&7
*cat <&7
;geht nur einmal
;geht nur einmal
*cat <&7
*cat <&7


==Gleichzeitiges Lesen aus verschiedenen Dateien==
= Gleichzeitiges Lesen aus verschiedenen Dateien =
 
<syntaxhighlight>
<syntaxhighlight>
#!/bin/bash
#!/bin/bash
Zeile 28: Zeile 45:
  do  
  do  
   read var3 <&3  
   read var3 <&3  
   read var4 <&4  
   read var4 <&4  
   echo passwd $var3
   echo passwd $var3
   echo shadow $var4 ;  
   echo shadow $var4 ;  
   test -z $var4 && break  
   test -z $var4 && break  
  done
  done
</syntaxhighlight>
</syntaxhighlight>
==Gleichzeitiges Lesen aus Datei und Standardeingabe==
 
= Gleichzeitiges Lesen aus Datei und Standardeingabe =
 
<syntaxhighlight>
<syntaxhighlight>
#!/bin/bash
#!/bin/bash

Version vom 31. Mai 2023, 07:17 Uhr

Schreibenden Deskriptor

anlegen
  • exec 5> /tmp/five
rein schreiben
  • echo eins >&5
  • echo zwei >&5
  • echo drei >&5
ausgeben
  • cat /tmp/five
aufheben
  • exec 5>&-
führt zu Fehler
  • echo vier >&5

Lesender Deskriptor

anlegen
  • exec 7< /etc/hosts
auslesen
  • cat <&7
geht nur einmal
  • cat <&7

Gleichzeitiges Lesen aus verschiedenen Dateien

#!/bin/bash
exec 3< /etc/passwd
exec 4< /etc/shadow
while true 
 do 
  read var3 <&3 
  read var4 <&4 
  echo passwd $var3
  echo shadow $var4 ; 
  test -z $var4 && break 
 done

Gleichzeitiges Lesen aus Datei und Standardeingabe

#!/bin/bash
exec 3< $1
while read line <&3
do
   echo $line
   printf "Eine weitere Zeile einlesen? [j/n] : "
   read REPLY
   test "$REPLY" = "n"  && break
done