linux bash dictionary check if empty
up vote
0
down vote
favorite
How to check if a dictionary (associative array) is empty? I just declare one using declare -A dict
. I want to know if it is just declared but not have any key.
bash shell-script associative-array
add a comment |
up vote
0
down vote
favorite
How to check if a dictionary (associative array) is empty? I just declare one using declare -A dict
. I want to know if it is just declared but not have any key.
bash shell-script associative-array
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
How to check if a dictionary (associative array) is empty? I just declare one using declare -A dict
. I want to know if it is just declared but not have any key.
bash shell-script associative-array
How to check if a dictionary (associative array) is empty? I just declare one using declare -A dict
. I want to know if it is just declared but not have any key.
bash shell-script associative-array
bash shell-script associative-array
edited 2 days ago
Kusalananda
119k16223364
119k16223364
asked 2 days ago
focus zheng
14
14
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
4
down vote
The length of (or the number of elements in) an associative array is available as ${#array[@]}
, just like for an ordinary array. If this number is zero, then the array is empty.
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
On an ordinary shell variable, may use the -v
test to test whether it exists or not:
if [ -v variable ]; then
echo 'variable exists'
fi
... but this does not work intuitively on arrays. You can't therefore use this reliably to determine if an array exists but is empty, or whether it hasn't been declared yet.
The test will be true on arrays if their 0
key exists.
Hi @kusa.I find a way to check,if [[ -z ${!dict[*]} ]];this will check if any key exist.
– focus zheng
2 days ago
@focuszheng This would be better:if [ "${#dict[@]}" -ne 0 ]
. It's better because the shell does not have to concatenate all the keys together to create a long string.
– Kusalananda
2 days ago
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
2 days ago
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
2 days ago
@focuszheng You will get "unbound variable" only if you run underset -u
(this is not the default inbash
). Also, it is unclear whether you want to check whether an array is empty or whether it is defined.
– Kusalananda
2 days ago
|
show 3 more comments
up vote
-1
down vote
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
this should be fine to check it is empty.
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
4
down vote
The length of (or the number of elements in) an associative array is available as ${#array[@]}
, just like for an ordinary array. If this number is zero, then the array is empty.
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
On an ordinary shell variable, may use the -v
test to test whether it exists or not:
if [ -v variable ]; then
echo 'variable exists'
fi
... but this does not work intuitively on arrays. You can't therefore use this reliably to determine if an array exists but is empty, or whether it hasn't been declared yet.
The test will be true on arrays if their 0
key exists.
Hi @kusa.I find a way to check,if [[ -z ${!dict[*]} ]];this will check if any key exist.
– focus zheng
2 days ago
@focuszheng This would be better:if [ "${#dict[@]}" -ne 0 ]
. It's better because the shell does not have to concatenate all the keys together to create a long string.
– Kusalananda
2 days ago
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
2 days ago
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
2 days ago
@focuszheng You will get "unbound variable" only if you run underset -u
(this is not the default inbash
). Also, it is unclear whether you want to check whether an array is empty or whether it is defined.
– Kusalananda
2 days ago
|
show 3 more comments
up vote
4
down vote
The length of (or the number of elements in) an associative array is available as ${#array[@]}
, just like for an ordinary array. If this number is zero, then the array is empty.
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
On an ordinary shell variable, may use the -v
test to test whether it exists or not:
if [ -v variable ]; then
echo 'variable exists'
fi
... but this does not work intuitively on arrays. You can't therefore use this reliably to determine if an array exists but is empty, or whether it hasn't been declared yet.
The test will be true on arrays if their 0
key exists.
Hi @kusa.I find a way to check,if [[ -z ${!dict[*]} ]];this will check if any key exist.
– focus zheng
2 days ago
@focuszheng This would be better:if [ "${#dict[@]}" -ne 0 ]
. It's better because the shell does not have to concatenate all the keys together to create a long string.
– Kusalananda
2 days ago
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
2 days ago
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
2 days ago
@focuszheng You will get "unbound variable" only if you run underset -u
(this is not the default inbash
). Also, it is unclear whether you want to check whether an array is empty or whether it is defined.
– Kusalananda
2 days ago
|
show 3 more comments
up vote
4
down vote
up vote
4
down vote
The length of (or the number of elements in) an associative array is available as ${#array[@]}
, just like for an ordinary array. If this number is zero, then the array is empty.
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
On an ordinary shell variable, may use the -v
test to test whether it exists or not:
if [ -v variable ]; then
echo 'variable exists'
fi
... but this does not work intuitively on arrays. You can't therefore use this reliably to determine if an array exists but is empty, or whether it hasn't been declared yet.
The test will be true on arrays if their 0
key exists.
The length of (or the number of elements in) an associative array is available as ${#array[@]}
, just like for an ordinary array. If this number is zero, then the array is empty.
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
On an ordinary shell variable, may use the -v
test to test whether it exists or not:
if [ -v variable ]; then
echo 'variable exists'
fi
... but this does not work intuitively on arrays. You can't therefore use this reliably to determine if an array exists but is empty, or whether it hasn't been declared yet.
The test will be true on arrays if their 0
key exists.
edited 2 days ago
answered 2 days ago
Kusalananda
119k16223364
119k16223364
Hi @kusa.I find a way to check,if [[ -z ${!dict[*]} ]];this will check if any key exist.
– focus zheng
2 days ago
@focuszheng This would be better:if [ "${#dict[@]}" -ne 0 ]
. It's better because the shell does not have to concatenate all the keys together to create a long string.
– Kusalananda
2 days ago
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
2 days ago
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
2 days ago
@focuszheng You will get "unbound variable" only if you run underset -u
(this is not the default inbash
). Also, it is unclear whether you want to check whether an array is empty or whether it is defined.
– Kusalananda
2 days ago
|
show 3 more comments
Hi @kusa.I find a way to check,if [[ -z ${!dict[*]} ]];this will check if any key exist.
– focus zheng
2 days ago
@focuszheng This would be better:if [ "${#dict[@]}" -ne 0 ]
. It's better because the shell does not have to concatenate all the keys together to create a long string.
– Kusalananda
2 days ago
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
2 days ago
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
2 days ago
@focuszheng You will get "unbound variable" only if you run underset -u
(this is not the default inbash
). Also, it is unclear whether you want to check whether an array is empty or whether it is defined.
– Kusalananda
2 days ago
Hi @kusa.I find a way to check,if [[ -z ${!dict[*]} ]];this will check if any key exist.
– focus zheng
2 days ago
Hi @kusa.I find a way to check,if [[ -z ${!dict[*]} ]];this will check if any key exist.
– focus zheng
2 days ago
@focuszheng This would be better:
if [ "${#dict[@]}" -ne 0 ]
. It's better because the shell does not have to concatenate all the keys together to create a long string.– Kusalananda
2 days ago
@focuszheng This would be better:
if [ "${#dict[@]}" -ne 0 ]
. It's better because the shell does not have to concatenate all the keys together to create a long string.– Kusalananda
2 days ago
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
2 days ago
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
2 days ago
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
2 days ago
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
2 days ago
@focuszheng You will get "unbound variable" only if you run under
set -u
(this is not the default in bash
). Also, it is unclear whether you want to check whether an array is empty or whether it is defined.– Kusalananda
2 days ago
@focuszheng You will get "unbound variable" only if you run under
set -u
(this is not the default in bash
). Also, it is unclear whether you want to check whether an array is empty or whether it is defined.– Kusalananda
2 days ago
|
show 3 more comments
up vote
-1
down vote
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
this should be fine to check it is empty.
add a comment |
up vote
-1
down vote
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
this should be fine to check it is empty.
add a comment |
up vote
-1
down vote
up vote
-1
down vote
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
this should be fine to check it is empty.
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
this should be fine to check it is empty.
edited 2 days ago
Jeff Schaller
37.4k1052121
37.4k1052121
answered 2 days ago
focus zheng
14
14
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f486546%2flinux-bash-dictionary-check-if-empty%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown