के साथ एक बहस की स्थापना मैं अक्सर एक सरल बैश कमांड चलाएँ:बैश
rpm -Uvh --define "_transaction_color 3" myPackage.rpm
जो ठीक से काम करता है।
लेकिन अब मैं एक बैश फ़ाइल में स्क्रिप्ट कोशिश कर रहा हूँ, और यह अधिक लचीला बनाने:
error: Macro % has illegal name (%define)
त्रुटि आ रहा है:
#!/bin/bash
INSTALL_CMD=rpm
INSTALL_OPT="-Uvh --define '_transaction_color 3'"
${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm
हालांकि, इस त्रुटि पैदा रहता है --define
से और उद्धृत _transaction_color
को संभाला जाता है।
मैंने INSTALL_OPT
एक सरणी बनाने के लिए विभिन्न प्रकार की भागने, अलग-अलग वाक्यांशों की कोशिश की है, ${INSTALL_OPT[@]}
के साथ संभाला है।
अभी तक, मेरे प्रयासों ने काम नहीं किया है।
स्पष्ट रूप से, मैं जो चाहता हूं वह बेहद सरल है। मुझे यकीन नहीं है कि इसे कैसे पूरा किया जाए।
मैं अपने --define
तर्क को ठीक से संभालने के लिए कैसे बाश प्राप्त कर सकता हूं?
आप 'INSTALL_OPT = 'की कोशिश की है - Uvh --define _transaction_color 3'', है ना? –
@ सैम्पसन-चेन: कोशिश की। "त्रुटि: मैक्रो% _transaction_color खाली शरीर है"। – abelenky
ऐसा इसलिए है क्योंकि बैश आपके तर्कों को '-उवीएच' और '--define' और' _transaction_color' और '3'' 'के रूप में पढ़ता है। आपको ** इस मामले में एक सरणी का उपयोग करना होगा (जैसा कि बाड़मेर के उत्तर में नीचे दिखाया गया है): 'INSTALL_OPT = (- Uvh --define '_transaction_color 3')'। फिर '$ {INSTALL_CMD}" $ {INSTALL_OPT [$ @]} "myPackage.rpm' काम करता है (डबल कोट्स के साथ, जैसा कि उन्होंने उल्लेख किया है)। –