Ker*_*hen 22 arrays bash if-statement
我想看看 bash 中的数组是否为空
key=[]
key1=["2014"]
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
[[ -z "$key" ]] && echo "empty" || echo "not Empty"
[[ -z "$key1" ]] && echo "empty" || echo "not Empty"
Run Code Online (Sandbox Code Playgroud)
两者都返回“非空”
[[ $key==[] ]] && echo "empty" || echo "not Empty"
[[ $key1==[] ]] && echo "empty" || echo "not Empty"
Run Code Online (Sandbox Code Playgroud)
两人皆归empty。
Ted*_*gmo 35
正如 @cheapner 在评论中指出的,您没有正确定义数组。
key=()
key1=("2014" "kdjg")
Run Code Online (Sandbox Code Playgroud)
key这里是一个空数组并且key1有2元素。
然后打印数组中的元素数量,分别是0和2:
echo "${#key[@]}"
echo "${#key1[@]}"
Run Code Online (Sandbox Code Playgroud)
分别打印empty和not empty:
if (( ${#key[@]} == 0 )); then
echo empty
fi
if (( ${#key1[@]} != 0 )); then
echo not empty
fi
Run Code Online (Sandbox Code Playgroud)