首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Linux Shell 數組:空數組 () 與空字符串數組 ("") 的區別

     編輯:程式設計疑難解答

定義對比

array1=()      # 空數組:零個元素
array2=("")    # 含一個空字符串元素的數組

核心區別

特性array1=()array2=("")
元素個數 ${#array[@]}01
第一個元素 ${array[0]}未設置/報錯空字符串 ""
遍歷 for i in "${array[@]}"零次循環執行一次,i 為空串
內存佔用極小(僅數組結構)分配 1 個元素槽位

驗證腳本

#!/bin/bash
array1=()
array2=("")

echo "array1 長度: ${#array1[@]}"  # 0
echo "array2 長度: ${#array2[@]}"  # 1

echo "array1[0]: '${array1[0]}'"   # 空(未設置)
echo "array2[0]: '${array2[0]}'"   # 空字符串

echo "遍歷 array1:"
for i in "${array1[@]}"; do echo "  [$i]"; done  # 無輸出

echo "遍歷 array2:"
for i in "${array2[@]}"; do echo "  [$i]"; done  # 輸出一行 []

類比理解

  • array1=() 如 空盒子,裡面什麼都沒有。
  • array2=("") 如 盒子裡放了一張白紙,白紙內容為空,但佔據位置。
  • C 語言類比:int *p = NULL (空指針/空數組) vs char str[1] = {""} (含一個空字符串,實際佔 1 字節存 \0)。

實際應用場景

  1. 空數組:初始化待填充容器,files=(); files+=(newfile) 動態添加。
  2. 空字符串元素:佔位、保持索引對齊、作為分隔符處理邊界情況。

注意事項

  • Bash 數組下標從 0 開始,稀疏數組允許(如 arr[5]=val 直接賦值)。
  • unset arr[0] 刪除元素後數組變稀疏,${#arr[@]} 減 1,但下標不重排。
  • 導出數組給子進程需用 declare -p arr 或 export(僅支持關聯數組導出)。

理解「零元素」與「一個空元素」的本質區別,避免 Shell 腳本中遍歷次數、條件判斷邏輯出錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved