Creating an array


 
Thread Tools Search this Thread
# 1  
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.

Code:
#!/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...

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

and

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

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

When I try...

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

and
Code:
#!/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...

Code:
#!/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
Code:
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

Last edited by jrymer; 07-19-2012 at 01:13 PM..
# 2  
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.
# 3  
Quote:
Originally Posted by jrymer
Code:
#!/bin/bash
ARRAY=one two three

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.

Quote:
When I do this I receive the error
: two: not found
and
: Bad substitution
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
Code:
${ARRAY[0]}

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

Quote:
Code:
ARRAY=(one two three)
ARRAY=( one two three )
ARRAY=( 'one' 'two' 'three' )
ARRAY=('one' 'two' 'three')

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

Quote:
I've tried it with declare -a out front too, and I get
: declare: not found
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
This User Gave Thanks to Lem For This Post:
# 4  
Yea I realized that after an hour of trying, felt really stupid afterwards -_____-
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Science: Gadgets
Difficulty: Easy
Microphones can be used not only to pick up sound, but also to project sound similar to a speaker.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Creating an array with options as an argument!

Hi Guys, I am writting a c shell script where I have to parse an input argument with options that could be an array. So far I have achieved where I could parse a single argument with option but failed when I try to create an array with the options. For example: This is on terminal window:... (2 Replies)
Discussion started by: dixits
2 Replies

2. Shell Programming and Scripting

Creating array from file

Dear community, how can I create an array from file taking only the 4th field? out.txt file is something like this: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20So the final array should be: 4 8 12 16 20With this command I created an array with all the fields, but I need only the 4th... (13 Replies)
Discussion started by: Lord Spectre
13 Replies

3. Shell Programming and Scripting

Creating bash array name from variable

Hi gurus, I need to create arrays from variables, via a loop. The issue I have is with the array name creation. How do I use a variable to define an array? I want to do something like declare -a $H where $H is my loop variable. I then need to add items to each array I've created,... (3 Replies)
Discussion started by: melias
3 Replies

4. Shell Programming and Scripting

Problem with array and creating directories

I have an interesting requirement. I have declaried an array like :- arr=`find . ! -name "." | xargs -I {} echo {} | cut -c 2-${#}` Then i will try to access the array elements like :- i=0 for i in ${arr}; do Here comes the confusions, the array elements are basically dir and files stored... (2 Replies)
Discussion started by: Renjesh
2 Replies

5. Shell Programming and Scripting

Creating array containing file names

I am wondering how I can save the file names (stored in $file or $fnames) in array which I can access with an index. alias MATH 'set \!:1 = `echo "\!:3-$" | bc -l`' set narg = $#argv while ($iarg < $narg) MATH iarg = $iarg + 1 set arg = $argv set opt = ` echo $arg | awk... (1 Reply)
Discussion started by: kristinu
1 Replies

6. Shell Programming and Scripting

creating variable array name

#!/bin/ksh #export CLASSPATH=$CLASSPATH:~dialp/cso/classes:/opt/oracle/product/8.1.6/jdbc/lib/classes12.zip #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/product/8.1.6/lib DATE="`date '+%m%d%Y'`" PATH=.:$PATH export PATH town_name='123' town_name='123' town_name='345'... (1 Reply)
Discussion started by: priyanka3006
1 Replies

7. Programming

Creating an array to hold posix thread ids: Only dynamic array works

I am facing a strange error while creating posix threads: Given below are two snippets of code, the first one works whereas the second one gives a garbage value in the output. Snippet 1 This works: -------------- int *threadids; threadids = (int *) malloc (num_threads * sizeof(int)); ... (4 Replies)
Discussion started by: kmehta
4 Replies

8. Shell Programming and Scripting

creating a dynamic array

i want to create an array the array elements are populated depending upon the number of entries present in a data file The data file is created dynamically how to achieve the same thanks (1 Reply)
Discussion started by: trichyselva
1 Replies

9. Shell Programming and Scripting

creating array variable

Hi all, i am quite fimiliar with shell scripting but i wouldn't regard myself as a semi professional at it. I am trying to create an array variable to read in 4 lines from a file using head and tail command in a pipeline and store each line into each array. I have done the scripting in unix... (2 Replies)
Discussion started by: scriptingmani
2 Replies

10. Shell Programming and Scripting

creating a dynamic array in ksh

Hi, Is it possible to create a dynamic array in shell script. I am trying to get the list of logfiles that created that day and put it in a dynamic array. I am not sure about it. help me New to scripting Gundu (3 Replies)
Discussion started by: gundu
3 Replies

Featured Tech Videos