में eval कमांड के लिए निकास कोड प्राप्त करें मैं एक शेल स्क्रिप्ट में एक फ़ंक्शन बनाने की कोशिश कर रहा हूं जो कमांड लेता है और इसे eval का उपयोग करके निष्पादित करता है, और उसके बाद आदेश की सफलता के आधार पर कुछ पोस्ट-प्रोसेसिंग करता है। दुर्भाग्यवश कोड व्यवहार नहीं कर रहा है जैसा कि मैं उम्मीद करता हूं। यहाँ मैं क्या है:sh
#!/bin/sh
...
function run_cmd()
{
# $1 = build cmd
typeset cmd="$1"
typeset ret_code
eval $cmd
ret_code=$?
if [ $ret_code == 0 ]
then
# Process Success
else
# Process Failure
fi
}
run_cmd "xcodebuild -target \"blah\" -configuration Debug"
जब आदेश ($cmd
) सफल होता है, यह ठीक काम करता है। जब आदेश विफल रहता है (उदाहरण के लिए संकलन त्रुटि), विफलता को संसाधित करने से पहले स्क्रिप्ट स्वचालित रूप से बाहर निकलती है। क्या कोई रास्ता है जिससे मैं बाहर निकलने से बच सकता हूं, या क्या कोई अलग दृष्टिकोण है जो मुझे ले सकता है जिससे मुझे वांछित व्यवहार प्राप्त हो सके?
तब तक कोई स्वचालित निकास नहीं होना चाहिए जब तक कि आप अपनी स्क्रिप्ट में कहीं भी सेट-सेट नहीं करते। यदि आपके पास है, तो 'सेट + ई' इसे अक्षम कर देगा। –
* श्वास * मैंने कॉलर स्क्रिप्ट के शीर्ष पर 'set -o errexit' lingering किया था। यह बात बताने के लिए धन्यवाद। – Jeff