zsh-users
 help / color / mirror / code / Atom feed
From: thomasg <thomas@gstaedtner.net>
To: TJ Luoma <luomat@gmail.com>
Cc: Zsh-Users List <zsh-users@zsh.org>
Subject: Re: How should I construct this?
Date: Wed, 24 Apr 2013 20:39:15 +0200	[thread overview]
Message-ID: <CABgBRiKKX_C1ebV+eTz1CSsHtE5-rux1mqDUDQ5yAaJDc+GY=Q@mail.gmail.com> (raw)
In-Reply-To: <E8BAA866-89AF-40DE-AB25-E17AD3042DDA@gmail.com>

On Wed, Apr 24, 2013 at 8:16 PM, TJ Luoma <luomat@gmail.com> 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
>
> ALL_WIFI_NETWORKS=(
>                                 Home
> 89382ashfa
>                                 Work
> 0823u2j98dyumn
>                                 "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}}}
> do
>                 echo "foo"
>
> done
>
>
> 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
> twice.
>
> TjL
>

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

typeset -A ALL_WIFI_NETWORKS
ALL_WIFI_NETWORKS=(name 'password' name2 'password2)

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

Hope this helps,

--
thomasg


  reply	other threads:[~2013-04-24 18:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-24 18:16 TJ Luoma
2013-04-24 18:39 ` thomasg [this message]
2013-04-24 18:56   ` TJ Luoma
2013-04-24 19:53     ` thomasg
2013-04-24 19:08   ` peter.d.miller
2013-04-24 18:49 ` Paul Hoffman
2013-04-24 19:50 ` Bart Schaefer
2013-04-24 22:30   ` TJ Luoma
2013-04-24 22:40   ` TJ Luoma
2013-04-25  1:29     ` Paul Hoffman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CABgBRiKKX_C1ebV+eTz1CSsHtE5-rux1mqDUDQ5yAaJDc+GY=Q@mail.gmail.com' \
    --to=thomas@gstaedtner.net \
    --cc=luomat@gmail.com \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).