|
From: | L A Walsh |
Subject: | Re: for loop over parameter expansion of array can miss resulted empty list |
Date: | Tue, 22 Mar 2022 20:05:21 -0700 |
User-agent: | Thunderbird |
On 2022/03/22 14:04, Lawrence Velázquez wrote:
On Tue, Mar 22, 2022, at 4:53 PM, L A Walsh wrote:On 2022/03/21 03:40, Alex fxmbsw7 Ratchev wrote:i solve this by shopt -s nullglobRepeat-By: Code: x=("/"); for i in "${x[@]%/}"; do echo "i is '$i'"; done Result: none Expected result: i is ''if you have nullglob set, then that is not the correct result.The original bug report said nothing about nullglob.
---- Sorry, I got sidetracked. In this case it wouldn't matter, if you have no directories where you are running this, then nothing will match, and it will be a null (empty) expression. The for i in X [Y [Z]], statement will execute once for each non-null value after the 'in'. If there are no expressions, then it won't execute. Thus there should be no output. If you wanted to gather up dir names in the current directory, I'd use something like: readarray -t -d '' dirs< <(find . -maxdepth 1 -type d -print0) dirs=${dirs[@]#./} Sorry for my getting sidetracked (it happens alot. find . -type d -print
[Prev in Thread] | Current Thread | [Next in Thread] |