मेरे पास कुछ तत्वों से युक्त एक सरणी है, लेकिन मैं नए आइटम को सरणी की शुरुआत में धकेलना चाहता हूं; मैं उसको कैसे करू?
मेरे पास कुछ तत्वों से युक्त एक सरणी है, लेकिन मैं नए आइटम को सरणी की शुरुआत में धकेलना चाहता हूं; मैं उसको कैसे करू?
जवाबों:
arr=("new_element" "${arr[@]}")
आम तौर पर, आप करेंगे।
arr=("new_element1" "new_element2" "..." "new_elementN" "${arr[@]}")
arr=( "${arr[@]}" "new_element" )
या इसके बजाय
arr+=( "new_element" )
आम तौर पर, आप करेंगे।
arr=( "${arr[@]}" "new_element1" "new_element2" "..." "new_elementN") #Or
arr+=( "new_element1" "new_element2" "..." "new_elementN" )
मान लें कि हम अनुक्रमणिका 2 की स्थिति में एक तत्व जोड़ना चाहते हैं [2] , हम वास्तव में उप- गिरफ्तारी के नीचे विलय करेंगे:
सूचकांक स्थिति 2 के साथ सभी तत्वों को अंतिम गिरफ्तारी [2] , गिरफ्तारी [3] ,…।
arr=( "${arr[@]:0:2}" "new_element" "${arr[@]:2}" )
एक सरणी से एक तत्व को हटाने के अलावा (चलो तत्व # 2 कहते हैं), हमें दो उप-सरणियों को संक्षिप्त करने की आवश्यकता है। पहला उप-सरणी तत्वों # 2 से पहले तत्वों को रखेगा और दूसरे उप-सरणी में तत्व # 2 के बाद के तत्व होंगे।
arr=( "${arr[@]:0:2}" "${arr[@]:3}" )
${arr[@]:0:2}
दो तत्वों को गिरफ्तार करेगा [0] और गिरफ्तार [1] सरणी की शुरुआत से शुरू होता है।${arr[@]:3}
index3 से सभी तत्वों को गिरफ्तार किया जाएगा [3] अंतिम तक।एक तत्व को निकालने की एक और संभावना है
उपयोग करना unset
(वास्तव में तत्व को 'अशक्त' मान देना)
unset arr[2]
यदि आप अपने तत्वों का मूल्य जानते हैं, तो पैटर्न बदलें का उपयोग करें।
arr=( "${arr[@]/PATTERN/}" )
arr+=(element)
और unset arr[2]
जो होना चाहिए unset -v 'arr[2]'
!) को छोड़कर , गैर-विरल सरणियों को मानता है। यह भी ध्यान दें कि arr=( "${arr[@]/PATTERN/}" )
तत्वों की संख्या में परिवर्तन नहीं होता है। यह सब कर सकते हैं उन्हें खाली स्ट्रिंग के साथ बदल दिया है।
ध्यान दें कि bash
(ksh से कॉपी) में सरणियाँ बल्कि सहयोगी सरणियाँ हैं।
a=(newvalue "$a[@]")
एक नया बनाना होगा $a
के साथ सरणी newvalue
के रूप में ${a[0]}
और चाबी 1, 2 के साथ उनके प्रमुख के संख्यात्मक क्रम में संलग्न मूल सरणी के तत्वों ...
उदाहरण के लिए, यदि आपके पास:
bash-4.4$ typeset -p a
declare -a a=([0]="foo" [12]="bar")
bash-4.4$ a=(newvalue "${a[@]}")
bash-4.4$ typeset -p a
declare -a a=([0]="newvalue" [1]="foo" [2]="bar")
यह बताता है कि उसके लिए कोई बिल्टइन ऑपरेटर क्यों नहीं है।
यदि आप के newvalue
रूप में सम्मिलित करना चाहते हैं ${a[0]}
और एक-एक करके सभी अन्य कुंजियों को स्थानांतरित करना चाहते हैं, तो आपको एक अस्थायी सरणी की आवश्यकता होगी:
b=newvalue
for k in "${!a[@]}"; do
b[k+1]=${a[k]}
done
unset a
for k in "${!b[@]}"; do
a[k]=${b[k]}
done
unset b
गोले की तरह zsh
या yash
जिनके पास सामान्य सरणियाँ होती हैं, उनके लिए ऑपरेटर होते हैं:
zsh
:
a[1,0]=newvalue
(स्केलर चर के लिए प्रीपेड स्ट्रिंग्स के लिए भी काम करता है)
yash
:
array -i a 0 newvalue
# array declaration
arr=()
#Function to read data from file a and add into array
fun_add_in_array()
{
input=$1
while IFS=',' read -r f1 f2
do
echo "Element1 : $f1"
echo "Element2 : $f2"
arr+=( "$f1" )
done < "$input"
}
#Function to print a array
fun_read_array()
{
arr=("$@")
for i in "${arr[@]}"
do
echo $i
done
}
ARRAY+=('foo')