Puncte:0

cat : Nu citiți stdin dacă nu este dat niciun fișier de intrare pe linia de comandă

drapel ph

Am un script care concatenează fișierele cu pisică. Conține aproximativ următoarea linie care blochează scriptul în citirea intrării standard dacă directorul nu conține fișiere:

cat /path/to/dir/* > concat.txt

Există vreo modalitate de a face oricare pisică nu citesc nimic din intrarea standard și produc o ieșire goală dacă nu există fișiere la /cale/spre/dir/, sau folosiți o altă comandă pentru a realiza același lucru?

raj avatar
drapel cn
raj
În cazul dvs., dacă nu există fișiere la `/path/to/dir/*`, `cat` va afișa un mesaj de eroare și nu va citi nimic din stdin. Chiar ai incercat-o? `cat` citește din stdin numai dacă nu există **nici un parametru prezent**, nu dacă **există** un parametru care specifică un fișier inexistent.
Puncte:3
drapel us

Se pare că ai nullglob activat astfel încât /cale/spre/dir/* se extinde la nimic dacă nu sunt prezente fișiere în /cale/spre/dir/. Puteți, desigur, să dezactivați nullglob (shopt -u nullglob) și obțineți comportamentul implicit, unde /cale/spre/dir/* rămâne așa cum este dacă nimic nu se potrivește și pisică va reclama dosarul inexistent:

$ cat /cale/spre/dir/*
cat: '/path/to/dir/*': Nu există un astfel de fișier sau director

Ai putea, de asemenea, doar să tachezi un /dev/null la sfarsit in schimb:

$ shopt -s nullglob; cat /cale/la/dir/* /dev/null
$ echo $?
0

pisică va primi un EOF imediat de la /dev/null, așa că nu va scrie nimic și va renunța.

Serge Rogatch avatar
drapel ph
Mulțumesc, ideea `/dev/null` este deosebit de atrăgătoare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.