a) कमांड 1 के आउटपुट को पकड़ा जा सकता है
output=$(diff "helloworld$x.out" "output/helloworld$x.out")
या बैकटिक्स के साथ, लेकिन वे हतोत्साहित हैं, क्योंकि आप उन्हें घोंसला नहीं दे सकते हैं, और वे फ़ॉन्ट के आधार पर एपोस्ट्रोफ से अलग करना मुश्किल हो सकता है:
output=`cmd1`
ख) किसी फ़ाइल पर लिखने के बजाय, और फिर उस फ़ाइल को पढ़ना, (या आउटपुट को हथियाना, और फिर उसे प्रतिध्वनित करना) आप सीधे एक पाइप का उपयोग करेंगे:
cmd1 > file
cat file | cmd2
output=$(cmd1)
echo "${output}" | cmd2
=>
cmd1 | cmd2
लेकिन आपके उदाहरण में, आपको आउटपुट में कोई दिलचस्पी नहीं है, लेकिन कार्यक्रम के परिणाम - क्या यह काम करता है?
diff "helloworld$x.out" "output/helloworld$x.out" && echo "success" || echo "failure"
&& और के उपयोग के बारे में पढ़ने के लिए || "शॉर्टकट और शॉर्टकट OR" की खोज करें।
आउटपुट को साफ रखने के लिए, आप 'diff' के आउटपुट को कहीं और रीडायरेक्ट कर सकते हैं:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null && echo "success" || echo "failure"
सफलता को हथियाने और बाद में इसका मूल्यांकन करने के लिए, आप $ में एक चर में अंतिम कमांड के परिणाम को स्टोर करते हैं ?:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null
result=$?
# do something else
case $result in
0) echo success ;;
*) echo failure ;;
esac
... > /dev/null
इस संदर्भ में क्या होता है। Diff का आउटपुट गोटो / देव / null होगा, लेकिन कुछ भी नहीं है?