Creating an array

I am having trouble creating an array, I've tried everything google gives me but it won't work, and it seems as though it should. Using Ubunto 12.04 and bash.

#!/bin/bash
ARRAY=one two three
echo ${ARRAY[0]}

When I do this I receive the error
: two: not found
and
: Bad substitution

When I use parenthesis like so...

#!/bin/bash
ARRAY=(one two three)
echo ${ARRAY[0]}

and

#!/bin/bash
ARRAY=( one two three )
echo ${ARRAY[0]}

I get the error
: Syntax error: "(" unexpected

When I try...

#!/bin/bash
ARRAY=( 'one' 'two' 'three' )
 echo ${ARRAY[0]}

and

#!/bin/bash
ARRAY=('one' 'two' 'three')
  echo ${ARRAY[0]}

I get the unexpected "(" error

I've tried it with declare -a out front too, and I get
: declare: not found

I've also tried variations of...

#!/bin/bash
ARRAY[1]=two
echo ${ARRAY[1]}

Getting the error ARRAY=[1] not found
Bad substitution

I've even changed the echo command to

echo ${ARRAY
[*]}

I've tried every combination of almost everything EXCEPT iterating through a loop but I don't see why that would work and a simple echo would not.

The ultimate goal is to store all the months of the year in an array, like 2012-01-01 and so forth.

Also I formatted it using dos2unix and it didn't fix it.

I feel as thought his is very easy and should not be happening, but if that is not the case and I have made a careless error PLEASE humble me.

Thanks

ok

[code]
declare -a arr=("one and one" two three)

[code]
arr=( -- NO spaces
Then a space between each array element - "one and one" makes a single element because it is enclosed in quotes and the quoted blob is set off by spaces.

UNIX does not like ^M characters at the end of lines in shell scripts. If you edit on Windows get an editor that can create unix carriage return files for you.

notepad++ can do that and is free.

This is the only wrong one. It assigns only 'one' to the variable ARRAY... then calls 'two' as a command with 'three' as its parameter.

Bad sustitution? Where does it come from?
Oh! This is sh speaking, not bash (in sh you don't have arrays!)
Somehow, you're using sh and not bash. In sh there aren't arrays, something like

${ARRAY[0]}

is indeed a bad susbstitution, and there's no declare builtin command.

These above are all fine... in bash of course.

Somehow you're using sh, not bash.
Declare is an internal bash command. If you were using bash, it would be found. Better: it wouldn't need to be looked for: it'd be already available, it'd be already there.
Since you're using sh, which doesn't know what 'declare' is, you get an error.

Why are you using sh and not bash? I don't know. Maybe some more info would help.
--
Bye

Yea I realized that after an hour of trying, felt really stupid afterwards -_____-