एक गैर-फ़ाइल कमांडलाइन पैरामीटर के भाग के रूप में उपयोग किए जाने वाले स्ट्रिंग में मैं एक चर कैसे पारित कर सकता हूं?


1

मैं जिस कमांडलाइन कमांड को चलाना चाहता हूं वह एक mkvmerge कमांड है:

mkvmerge arguments: [-o] [output_filename] [-a] [tracknumer] [-S] [source_filename]

तो मैं एक चर है commandऔर यह या तो के मूल्यों पर ले जाता -a 1, -a 1 -Sया -Sकुछ शर्तों के आधार पर पूरा किया जा रहा है, इसलिए मैं आदेश को चलाने के लिए मेरी पार्टी लिपि में इस अगर बयान है

if [[ ! -z $command ]]; then
    mkvmerge -o "${file}"$command "$sourcefile"
fi

स्पेस के बिना मेरे पास $commandसही कारण ${file}है क्योंकि $commandइसमें एक प्रमुख व्हाट्सएप है। समस्या यह है कि जब मैं स्क्रिप्ट चला रहा हूं, तो यह फ़ाइल नाम का हिस्सा होने के लिए $ आदेश मान रहा है और अतिरिक्त पैरामीटर के रूप में नहीं है जो फ़ाइल नाम के बाद का पालन करने के लिए हैं।


1
दो रिक्त स्थान भी एक अलग विभाजक हैं, इसलिए आप कोशिश कर सकते हैं "${file}" $command...
क्लेनोइड

1
यह इंगित करता है कि चर में अग्रणी स्थान नहीं है। इसके साथ मुद्रण का प्रयास करें printf '"%s"\n "$command"
गॉर्डन डेविसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.