मैं एक चर के आदेशों की एक श्रृंखला का परिणाम भेजने के लिए करना चाहते हैं:पाइप स्थिति
variable=$(a | few | commands)
हालांकि, आदेश प्रतिस्थापन रीसेट करता है PIPESTATUS
, इसलिए मैं का निरीक्षण नहीं कि वह कहाँ गलत हो गया तथ्य के बाद।
variable_file=$(mktemp) || exit 1
a | few | commands > $variable_file
exit_codes="${PIPESTATUS[*]}"
variable=$(<$variable_file)
वहाँ एक और अधिक सुरुचिपूर्ण समाधान है: एक समाधान mktemp
का उपयोग करें और वहाँ अस्थायी रूप से परिणाम डाल करने के लिए हो सकता है?
यह वास्तव में एक अच्छा सवाल है। मुझे लगता है कि आपके से कोई बेहतर समाधान नहीं है, मुझे आशा है कि कोई मुझे गलत साबित करेगा ;-) आप शायद "सेट-पाइपफेल" के बारे में जानते हैं, लेकिन फिर भी यह आपके प्रश्न के लिए ऑर्थोगोनल है। – tokland
ठीक है अब मैं चिंतित हूं क्योंकि मैं वही करता हूं जो आप करते हैं ... और यह काम करता है ... लेकिन अगर कुछ और सुरुचिपूर्ण है ... मुझे यह है ... – Cipi
यह देखें [प्रश्न] (http:/अधिक विचारों के लिए /stackoverflow.com/questions/3450960/using-xargs-to-assign-stdin-to-a-variable)। यह भी देखें [http://stackoverflow.com/questions/2413166/bash-redirect-and-append-stdout-and-stderr-to-file-and-terminal)। –