Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: How should I construct this?

On 04/24/2013 02:39 PM, thomasg wrote:
On Wed, Apr 24, 2013 at 8:16 PM, TJ Luoma <luomat@xxxxxxxxx> wrote:
I am trying to write a shell script which will help my computer
automatically join Wi-Fi networks.

Each network needs to have an SSID (which may have spaces in it) and a
password (which may have spaces, punctuation, etc in it).

I'm trying to figure out the best way to create this.

I thought about trying to make an array or something like this where the
first 'column' would be the SSID and the 2nd column would be the passwords

                                 "Coffee House"          ""
                                 "Jenny's Wifi"          8675309

but then I need to be able to loop through $ALL_WIFI_NETWORKS using only
first column… something like this

for SSID in {{{The First Arg in Each Line of $ALL_WIFI_NETWORKS}}}
                 echo "foo"


where the part in {{{ and }}} indicates the part where I really don't know
how to do what I want to do.

It seems like there's got to be an easier / better way of doing this, but I
can't figure out what it is, other than keeping two lists/arrays, one of the
SSIDs, and one with the passwords, but that seems kludgey because I have to
ask the user (whoever uses this script besides me) to put the SSIDs in


What you want to use in a case like this are hashtables.
Basically this is a special array type, defined like this:

ALL_WIFI_NETWORKS=(name 'password' name2 'password2)

You can then loop: for FOO in ${(k)ALL_WIFI_NETWORKS}; BAR

Hope this helps,

here's another way

I=(a b c d); for ((i=1; i<=$#I/2; i++ )); do echo $I[$((2*i-1))] $I[$((2*i))]; done


Messages sorted by: Reverse Date, Date, Thread, Author