Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Idiom
- X-seq: zsh-workers 25282
- From: Stephane Chazelas <Stephane_Chazelas@xxxxxxxx>
- To: Jaime Vargas <jev@xxxxxxx>
- Subject: Re: Idiom
- Date: Tue, 15 Jul 2008 08:58:57 +0100
- Cc: Zsh hackers list <zsh-workers@xxxxxxxxxx>
- In-reply-to: <398A2623-A473-4DFA-89C8-91716D1405AB@xxxxxxx>
- Mail-followup-to: Jaime Vargas <jev@xxxxxxx>, Zsh hackers list <zsh-workers@xxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <398A2623-A473-4DFA-89C8-91716D1405AB@xxxxxxx>
On Mon, Jul 14, 2008 at 05:34:05PM -0400, Jaime Vargas wrote:
> Is there a better way to setup the ${mask_octects} array?
> Without the back-ticks the expression constructs an array of one element.
>
> -- Jaime
>
> #!/bin/zsh
> declare -A cidr_to_mask
> cidr_to_mask=(
> 16 255.255.0.0
> 17 255.255.128.0
> 18 255.255.192.0
> 19 255.255.224.0
> 20 255.255.240.0
> 21 255.255.248.0
> 22 255.255.252.0
> 23 255.255.254.0
> 24 255.255.255.0
> 25 255.255.255.128
> 26 255.255.255.192
> 27 255.255.255.224
> 28 255.255.255.240
> 29 255.255.255.248
> 30 255.255.255.252
> 31 255.255.255.254
> 32 255.255.255.255
> )
>
> set -A mask_octects `echo ${cidr_to_mask[22]//./ }`
Maybe something like:
set-mask_octects() {
local mask
(( mask = (2 ** $1 - 1) << (32 - $1)))
mask_octects=()
repeat 4 {
mask_octects=($((mask & 255)) $mask_octects)
(( mask = mask >> 8 ))
}
return 0
}
--
Stéphane
Messages sorted by:
Reverse Date,
Date,
Thread,
Author