मैं स्क्रिप्ट को दिए गए कमांड लाइन के तर्कों को किसी अन्य कमांड पर पारित करना चाहता हूं, लेकिन मैं पहले सामने कुछ अतिरिक्त तर्क जोड़ना चाहता हूं। मैं इसे बैश के साथ कैसे कर सकता हूं?
यह कमांड के माध्यम से सभी तर्क भेजेगा:
command $@
लेकिन मुझे कुछ और पसंद है:
command [argument1, argument2, $@]
आप इस तरह से कैसे कर सकते हैं?
उत्तर:
उत्तर № 1 के लिए 4यदि आपके पास है grep foo
और आप जोड़ना चाहते हैं -f
से पहले foo
, आप उपयोग कर सकते हैं grep -f foo
। यही बात यहाँ लागू होती है:
cmd argument1 argument2 "$@"
जवाब के लिए 13 № 2
@ThatOtherGuy का उत्तर सही है।
यदि आप स्थितिगत मापदंडों में कुछ दलीलों को "अनफिट" करना चाहते हैं, तो यह करें:
set -- arg1 arg2 "$@"
cmd "$@"
जवाब के लिए 0 № 3
यदि आप ऐसा करने के लिए एक अधिक सामान्य तरीका चाहते हैं (अनुशंसित), इसका उपयोग करें:
#!/usr/bin/env bash
function xyz {
echo "${args[@]}" # arguments will printed out
}
function abc {
local args=()
args+=(argument1)
args+=(argument2)
args+=("$@")
xyz "${args[@]}"
}
परीक्षण करने के लिए, उपरोक्त कोड का स्रोत
source script.sh && abc