zsh-users
 help / color / mirror / code / Atom feed
From: peter.d.miller@oracle.com
To: zsh-users@zsh.org
Subject: Re: How should I construct this?
Date: Wed, 24 Apr 2013 15:08:53 -0400	[thread overview]
Message-ID: <51782DC5.8050407@oracle.com> (raw)
In-Reply-To: <CABgBRiKKX_C1ebV+eTz1CSsHtE5-rux1mqDUDQ5yAaJDc+GY=Q@mail.gmail.com>

On 04/24/2013 02:39 PM, thomasg wrote:
> 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
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

Peter


  parent reply	other threads:[~2013-04-24 20:33 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
2013-04-24 18:56   ` TJ Luoma
2013-04-24 19:53     ` thomasg
2013-04-24 19:08   ` peter.d.miller [this message]
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=51782DC5.8050407@oracle.com \
    --to=peter.d.miller@oracle.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).