बैश स्क्रिप्ट से मूल्य वापस करें - लिनक्स, बैश, इको, रिटर्न-वैल्यू

मैं एक बैश फ़ाइल बनाना चाहता हूं जो एक मान देता है। मतलब, स्क्रिप्ट script_a.bash में मेरे पास एक निश्चित गणना है, और स्क्रिप्ट script_b.bash इसे कॉल करेगा।

script_a.bash:

return $1*5

script_b.bash:

a_value=./script_a.bash 3

जब a_value 15 होगा।

मैंने इसके बारे में थोड़ा सा पढ़ा, और देखाबैश में "वापसी" नहीं है, लेकिन ऐसा कुछ "इको" का उपयोग करके कार्यों में किया जा सकता है। मैं फ़ंक्शंस का उपयोग नहीं करना चाहता, मुझे एकाधिक स्थानों में उपयोग करने के लिए एक सामान्य स्क्रिप्ट चाहिए।

क्या एक अलग लिपि से मूल्य वापस करना संभव है? धन्यवाद!

उत्तर:

जवाब के लिए 2 № 1

आउटपुट कैप्चर करने के लिए कमांड प्रतिस्थापन का उपयोग करें echo, और परिणाम गिनने के लिए अंकगणितीय अभिव्यक्ति का उपयोग करें:

script_a.bash:

echo $(( $1 * 5 ))

script_b.bash

a_value=$( script_a.bash 3 )

उत्तर № 2 के लिए 1

उपयोग नहीं करते हैं return या exit, क्योंकि वे "स्क्रिप्ट की सफलता / विफलता को इंगित करने के लिए हैं, आउटपुट नहीं।

अपनी स्क्रिप्ट इस तरह लिखें:

#!/bin/bash

echo $(( $1 * 5 ))

मूल्य तक पहुंचें:

a_value=$(./script_a.bash 3)

यही है, एक का उपयोग करें $(command substitution) स्क्रिप्ट के आउटपुट को कैप्चर करने के लिए उपभोक्ता कोड में।


जवाब के लिए 0 № 3

आप बाहर निकलने वाले आरसी का उपयोग कर सकते हैं, लेकिन ध्यान रखें कि परंपरागत रूप से * निक्स 0 में एक सफल परिणाम है, कोई भी सकारात्मक मान एक त्रुटि कोड है। क्या यह कॉल करने का विकल्प है

echo <your_value>;

और चेन में बुलाए जाने वाले अगले बाइनरी में आउटपुट रीडायरेक्ट करें?


संबंधित सवाल
सबसे लोकप्रिय