इस तरह अपनी स्क्रिप्ट arrArg.sh
है:
test.sh argument1 array argument2
मैं निम्नलिखित की तरह एक और बैश लिपि में इस डाल करने के लिए नहीं है चाहता हूँ
#!/bin/bash
arg1="$1"
arg2=("${!2}")
arg3="$3"
arg4=("${!4}")
echo "arg1=$arg1"
echo "arg2 array=${arg2[@]}"
echo "arg2 #elem=${#arg2[@]}"
echo "arg3=$arg3"
echo "arg4 array=${arg4[@]}"
echo "arg4 #elem=${#arg4[@]}"
अब सेटअप एक खोल में इस तरह से अपनी सरणियों:
arr=(ab 'x y' 123)
arr2=(a1 'a a' bb cc 'it is one')
और पारित तर्क इस तरह:
. ./arrArg.sh "foo" "arr[@]" "bar" "arr2[@]"
स्क्रिप्ट से ऊपर प्रिंट होगा:
arg1=foo
arg2 array=ab x y 123
arg2 #elem=3
arg3=bar
arg4 array=a1 a a bb cc it is one
arg4 #elem=5
नोट: यह अजीब है कि मैं . ./script
सिंटैक्स का उपयोग स्क्रिप्ट पर कार्य कर रहा हूँ प्रकट हो सकता है। ध्यान दें कि यह वर्तमान शैल पर्यावरण में स्क्रिप्ट के कमांड निष्पादित करने के लिए है।
प्रश्न वर्तमान शैल पर्यावरण क्यों और एक उप खोल क्यों नहीं?
ए क्योंकि बैश documented here by bash author himself
यह भी देखें कि http://stackoverflow.com/a/1063367/2235132 – devnull