簡體   English   中英

Korn Shell-打印空數組

[英]Korn shell - print empty array

我有一個問題,使用ksh時,將空數組打印為兩個括號。 來自的輸出

#!/bin/ksh

a=()
printf "%s\n" "${a[@]}"

(
)

使用bash時,將打印一個空行。 如何在ksh中獲得這種行為?

當我嘗試檢查數組是否為空時,它總是有一個元素:例如

echo ${#a[@]}

給我1作為輸出。

man kshvarname=(assign_list)表示“索引數組分配”。 assign_list不是可選的。

因此,如果執行a=()會發生什么情況,這是不確定的。 似乎創建了一個普通變量。

b= 
echo "${#b[@]}" 

也會給出1。 您將強制普通變量充當數組。

如果您未unset a[0]或未unset aecho ${#a[@]} unset a echo ${#a[@]}將為您提供0並打印然后未定義的數組/變量將打印一個空字符串。

如果要將變量定義為數組,則應使用typeset -aa ,則將得到一個不包含任何元素的數組,按預期進行打印(將不設置現有的普通變量)。 而且您的代碼清楚地顯示了應如何處理變量/數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM