/ / Linux / bash में कमांड लाइन तर्कों को प्राथमिकता दें - linux, bash, कमांड-लाइन-तर्क

लिनक्स / बैश - लिनक्स, बैश, कमांड लाइन-तर्कों में कमांड लाइन तर्कों के लिए तैयार करें

मैं स्क्रिप्ट को दिए गए कमांड लाइन के तर्कों को किसी अन्य कमांड पर पारित करना चाहता हूं, लेकिन मैं पहले सामने कुछ अतिरिक्त तर्क जोड़ना चाहता हूं। मैं इसे बैश के साथ कैसे कर सकता हूं?

यह कमांड के माध्यम से सभी तर्क भेजेगा:

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