linux bash dictionary check if empty
Clash Royale CLAN TAG#URR8PPP
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 Dec 7 at 10:14
Kusalananda
120k16225369
120k16225369
asked Dec 7 at 9:56
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
Dec 7 at 10:27
@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
Dec 7 at 10:30
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
Dec 7 at 10:31
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
Dec 7 at 10:32
@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
Dec 7 at 10:33
|
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 |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
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
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
Dec 7 at 10:27
@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
Dec 7 at 10:30
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
Dec 7 at 10:31
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
Dec 7 at 10:32
@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
Dec 7 at 10:33
|
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
Dec 7 at 10:27
@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
Dec 7 at 10:30
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
Dec 7 at 10:31
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
Dec 7 at 10:32
@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
Dec 7 at 10:33
|
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 Dec 7 at 10:31
answered Dec 7 at 10:01
Kusalananda
120k16225369
120k16225369
Hi @kusa.I find a way to check,if [[ -z $!dict[*] ]];this will check if any key exist.
– focus zheng
Dec 7 at 10:27
@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
Dec 7 at 10:30
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
Dec 7 at 10:31
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
Dec 7 at 10:32
@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
Dec 7 at 10:33
|
show 3 more comments
Hi @kusa.I find a way to check,if [[ -z $!dict[*] ]];this will check if any key exist.
– focus zheng
Dec 7 at 10:27
@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
Dec 7 at 10:30
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
Dec 7 at 10:31
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
Dec 7 at 10:32
@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
Dec 7 at 10:33
Hi @kusa.I find a way to check,if [[ -z $!dict[*] ]];this will check if any key exist.
– focus zheng
Dec 7 at 10:27
Hi @kusa.I find a way to check,if [[ -z $!dict[*] ]];this will check if any key exist.
– focus zheng
Dec 7 at 10:27
@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
Dec 7 at 10:30
@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
Dec 7 at 10:30
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
Dec 7 at 10:31
nope, if the dictionary is empty.an error "ubound variable" shows.
– focus zheng
Dec 7 at 10:31
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
Dec 7 at 10:32
You can test your conditional expression on linux server and bash version >4.4.
– focus zheng
Dec 7 at 10:32
@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
Dec 7 at 10:33
@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
Dec 7 at 10:33
|
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 Dec 7 at 12:40
Jeff Schaller
37.9k1053123
37.9k1053123
answered Dec 7 at 10:44
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