← Back to Bash Course | Chapter 6: Arrays | Lesson 9 of 10

Array Length और Elements हटाना

आप हमेशा एक array से पूछ सकते हैं कि इसके कितने elements हैं, और जब आपको ज़रूरत न हो तो आप individual elements हटा सकते हैं या पूरी array साफ़ कर सकते हैं।
Syntax
bash
${#array_name[@]}
unset 'array_name[index]'
unset array_name

Current Length Pana

${#arr[@]} हमेशा array में currently stored elements की actual संख्या reflect करता है, जो sparse arrays के लिए याद रखना ज़रूरी है जहां highest index element count से ज़्यादा हो सकता है।

Looping या input validate करने से पहले array की size check करने का यह standard तरीका है।

उदाहरण: Getting the Current Length

bash
#!/bin/bash
queue=(a b c d)
echo "Queue length: ${#queue[@]}"

एक Single Element हटाना

unset arr[idx] उस specific index पर element delete करता है, लेकिन यह बाद के elements को shift करके gap बंद करने के बजाय वहां एक gap छोड़ देता है। इसका मतलब है array sparse बन जाता है और ${#arr[@]} exactly एक से घट जाता है।

उदाहरण: Removing a Single Element

bash
#!/bin/bash
fruits=(apple banana cherry date)
unset 'fruits[1]'
echo "After removing index 1: ${fruits[@]}"
echo "Remaining count: ${#fruits[@]}"
for i in "${!fruits[@]}"; do
    echo "  index $i -> ${fruits[i]}"
done

पूरी Array हटाना

unset arr (बिना index के) पूरी array delete करता है, हर element और variable को खुद भी, जैसे यह कभी declare ही नहीं हुआ था। यह arr=() set करने से अलग है, जो array को empty करता है लेकिन इसे एक (empty) array के रूप में declared छोड़ देता है।

उदाहरण: Removing the Entire Array

bash
#!/bin/bash
temp_list=(x y z)
echo "Before: ${temp_list[@]}"
unset temp_list
echo "After unset, element count: ${#temp_list[@]}"

एक Sparse Array को Compact करना

एक array को खुद को arr=("${arr[@]}") से reassign करना इसे सिर्फ इसके currently-existing elements से rebuild करता है, किसी भी gaps को discard करते हुए और सब कुछ index 0 से फिर से number करते हुए।

Middle से elements हटाने के बाद एक array को compact करने का यह standard trick है।

उदाहरण: Compacting a Sparse Array

bash
#!/bin/bash
colors=(red green blue yellow)
unset 'colors[1]'
echo "Sparse: indices are ${!colors[@]}"
colors=("${colors[@]}")
echo "Compacted: indices are ${!colors[@]}, values are ${colors[@]}"
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह मान लेना कि unset arr[idx] gap भरने के लिए बाद के elements को shift down करता है; यह नहीं करता -- यह उस index पर एक hole छोड़ देता है, array को renumber करने के बजाय sparse बनाते हुए।
  2. unset arr[idx] (एक element हटाता है) को unset arr (पूरी array और इसके सभी elements हटाता है) के साथ confuse करना।
  3. यह उम्मीद करना कि ${#arr[@]} highest index plus one reflect करे; एक sparse array के लिए, यह actually present elements की संख्या reflect करता है, जो (highest index + 1) से कम हो सकती है।
चैप्टर सारांश
  • ${#arr[@]} array में actually present elements का current count देता है।
  • unset arr[idx] सिर्फ वह एक element हटाता है, subsequent elements को shift down करने के बजाय एक gap छोड़ते हुए।
  • unset arr (बिना index) पूरी array और इसके अंदर सब कुछ हटाता है।
  • एक sparse array को वाकई compact करने के लिए (gaps हटाएं और renumber करें), इसे arr=("${arr[@]}") से reassign करें, जो इसे एक fresh, densely-indexed array के रूप में rebuild करता है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.