Perl'in sadece STDOUT aynı değilse STDERR'ye yazmasını istiyorum. Örneğin, hem STDOUT hem STDERR çıkışı Terminal'e yönlendirirse, STDERR'in yazdırılmasını istemiyorum. Ben dışarı yönlendirirseniz, AncakSTDER, yalnızca farklı bir hedefse STDERR'ye nasıl yazdırılır?
bash $ outerr.pl
Hello standard output!
:
#!/usr/bin/perl
use strict;
use warnings;
print STDOUT "Hello standard output!\n";
print STDERR "Hello standard error\n" if ($someMagicalFlag);
exit 0
Şimdi (bu ben başarmak istiyorum budur) bu göz önünde bulundurun:
şu örneği (outerr.pl) düşünün tersi
bash $ outerr.pl > /dev/null
Hello standard error
ve similary:: dosya, ben almak istiyorum
Dışarı hem doğrudan ediyorsanızbash $ outerr.pl 2> /dev/null
Hello standard output!
/aynı dosyaya err, daha sonra sadece dışarı görüntülenmesi gereken:
bash $ outerr.pl > foo.txt 2>&1
bash $ cat foo.txt
Hello standard output!
Yani OUT belirlemek ve ERR/değerlendirmek için bir yol var ve aynı “şey” e işaret ediyor (açıklayıcı?)? o bir terminal ise
-t STDERR
gerçek olacak ve aynı şekilde STDOUT için:
STDERR ve STDOUT öğelerinin 1 ve 2 gibi kendi tanımlayıcıları vardır. Her ikisi de genellikle konsola yazdırır. – squiguy
Gerçekten yapman gerekenin bir adım geri çekilmesi ve bunu istemenin nedenlerini tekrar gözden geçirmesi gerektiğinden şüpheleniyorum. Gerçek amacınızı gerçekleştirmenin daha iyi bir yolu var, her ne olursa olsun. –
Ilmari Karonen ile birlikteyim. Bunun için neden endişeleneceğini gerçekten anlayamıyorum. Mesajları kopyalamak için olmamalı. STDOUT ve STDERR doğal olarak farklı olmalıdır. Nominal mesajlar STDOUT'a gider ve hata veya uyarı mesajları STDERR'e gider. Asla kucağından geçmeli. – titanofold