![](/img/trans.png)
[英]How to access elements of elements inside an associative array in korn shell
[英]Korn shell - print empty array
我有一個問題,使用ksh時,將空數組打印為兩個括號。 來自的輸出
#!/bin/ksh
a=()
printf "%s\n" "${a[@]}"
是
(
)
使用bash時,將打印一個空行。 如何在ksh中獲得這種行為?
當我嘗試檢查數組是否為空時,它總是有一個元素:例如
echo ${#a[@]}
給我1作為輸出。
man ksh
說varname=(assign_list)
表示“索引數組分配”。 assign_list
不是可選的。
因此,如果執行a=()
會發生什么情況,這是不確定的。 似乎創建了一個普通變量。
b=
echo "${#b[@]}"
也會給出1。 您將強制普通變量充當數組。
如果您未unset a[0]
或未unset a
則echo ${#a[@]}
unset a
echo ${#a[@]}
將為您提供0
並打印然后未定義的數組/變量將打印一個空字符串。
如果要將變量定義為數組,則應使用typeset -aa
,則將得到一個不包含任何元素的數組,按預期進行打印(將不設置現有的普通變量)。 而且您的代碼清楚地顯示了應如何處理變量/數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.