Bash scripting -- Usage of arrays

Wesley Shields wxs at csh.rit.edu
Tue Nov 29 21:31:36 GMT 2005


On Wed, Nov 30, 2005 at 02:39:15AM +0530, 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.

Bash (installed via ports) is in /usr/local/bin.  Change the first line
to be #!/usr/local/bin/bash and chmod 750 (at least) the script.  This
way you can just ./aa.sh and be done.

If you prefer to run it as you have shown above don't run sh aa.sh,
instead do bash aa.sh, assuming bash is in your path.  sh aa.sh will try
and run the script through sh (which is not bash).

wxs at syn ~ > ls -la foo.sh
-rwxr-xr-x  1 wxs  wxs  97 Nov 29 16:26 foo.sh*
wxs at syn ~ > cat foo.sh
#!/usr/local/bin/bash

array=( zero one two three four);
echo "Elements in array0:  ${array[@]}"
wxs at syn ~ > bash ./foo.sh
Elements in array0:  zero one two three four
wxs at syn ~ > ./foo.sh
Elements in array0:  zero one two three four
wxs at syn ~ > sh ./foo.sh
./foo.sh: 3: Syntax error: word unexpected (expecting ")")
wxs at syn ~ >

-- WXS


More information about the freebsd-questions mailing list