Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 Nov 2005 16:17:15 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        Jayesh Jayan <jayesh.freebsdlist@gmail.com>, freebsd-questions@freebsd.org
Subject:   Re: Bash scripting -- Usage of arrays
Message-ID:  <200511291617.16666.jhb@freebsd.org>
In-Reply-To: <e8ecf3c00511291309yb9caeb9uebdf92c4ad7af4f8@mail.gmail.com>
References:  <e8ecf3c00511291309yb9caeb9uebdf92c4ad7af4f8@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 29 November 2005 04:09 pm, Jayesh Jayan wrote:
> Hi,
>
> Today I was trying to script using arrays in FreeBSD 5.4 but it doesn't
> work.
>
> Below is a sample script which I used.
>
> ******************************************************
>
> #!/bin/bash
>
> array=( zero one two three four);
> echo "Elements in array0:  ${array[@]}"
>
> ******************************************************
>
> It works fine on RedHat server.
>
> Below is the output.
>
> # sh array.sh
> Elements in array0:  zero one two three four
>
> Below is the out put from the FreeBSD server using the same code.
>
> -bash-2.05b# sh aa.sh
> aa.sh: 3: Syntax error: word unexpected (expecting ")")
>
> Please guide me on how to use arrays on freebsd too.

sh != bash

You can either install bash from ports, or you can write your scripts in sh 
without using bash extensions.  For example, with sh you can do things like:

array="zero one to three four"
for x in $array; do
	echo $x
done

However, you can't easily get the count of items.  You could maybe do 
something like:

set $array
echo "$# items"

but that's somewhat hackish.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511291617.16666.jhb>