3
~ bash --version
GNU bash, version 3.2.51(1)-release (sparc-sun-solaris2.10)
Copyright (C) 2007 Free Software Foundation, Inc.
下面的命令按預期工作:有問題重定向標準錯誤創建W A子shell /進程替換
~ ls hdfhdfhdhfd 2> >(wc -l)
1
...但是,這並不工作,我跑出來的想法找出原因:
~ truss -eaf bash -c 'true' 2> >(some command to process text)
該命令的>()
內結束阻塞等待輸入。
如果我這樣做,而不是:
~ (true; truss -eaf bash -c 'true') 2> >(some command)
...它正常工作,雖然這不工作:
~ ( truss -eaf bash -c 'true') 2> >(some command)
# ^^^^^ ... note the 1st command is missing
如果我讓some command
= dd bs=1
,它消耗並打印所有文本桁架都會在stderr
上吐出,然後阻止。
只有在solaris中使用truss
時,我才能在Linux中重現相似的行爲。
也許某些shell和default Shell組合在Solaris和Linux之間的差異產生了這些不同的行爲。 – Efren 2013-06-20 07:51:43
也許嘗試使用'-o'而不是重定向 – ccarton 2013-06-20 15:38:26
ccarton,您應該將其作爲回答發佈。它確實解決了這個問題,但是我仍然很好奇爲什麼這首先發生。'truss'是我見過這種行爲的唯一終端應用程序。 – 2013-06-20 18:39:01