Visit Our UNIX and Linux User Community


Adding an element to a bash array with a variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Adding an element to a bash array with a variable
# 1  
Old 03-10-2015
Adding an element to a bash array with a variable

Hello,

I have a simple task and I am having some trouble with the syntax. I have a variable with an assigned value,

CMD_STRING='-L 22 -s 0 -r -O -A i -N 100 -n'

I would like to add that variable to an array. As far as I have been able to look up, the syntax should be something like,

CMD_STRING_LIST=("${CMD_STRING_LIST[@]}" "$CMD_STRING")

This does not work and the array is empty, even though I can print the contents of $CMD_STRING. The only examples I can find of this technique use hard coded values to add to the array like,

LIST=("${LIST[@]}" "stuff1" "stuff2" "stuff3")

I find this kind of example to be a bit annoying because I can't envision many real world examples where I would hard code data to add to an array. At least I think it is far more likely for such data to exist in variables.

Am I using the wrong technique here or do I have the syntax wrong?

LMHmedchem
# 2  
Old 03-11-2015
This seems to be working fine for me:

Code:
$ CMD_STRING='-L 22 -s 0 -r -O -A i -N 100 -n'
$ CMD_STRING_LIST=(1 2 3)
$ CMD_STRING_LIST=("${CMD_STRING_LIST[@]}" "$CMD_STRING")
$ echo ${#CMD_STRING_LIST[@]}
4
$ echo ${CMD_STRING_LIST[3]}
-L 22 -s 0 -r -O -A i -N 100 -n

I wonder if your doing this all within a loop and loosing the changes due to Bash sub-shell: variables lost
This User Gave Thanks to Chubler_XL For This Post:
# 3  
Old 03-11-2015
Quote:
Originally Posted by Chubler_XL
This seems to be working fine for me:

Code:
$ CMD_STRING='-L 22 -s 0 -r -O -A i -N 100 -n'
$ CMD_STRING_LIST=(1 2 3)
$ CMD_STRING_LIST=("${CMD_STRING_LIST[@]}" "$CMD_STRING")
$ echo ${#CMD_STRING_LIST[@]}
4
$ echo ${CMD_STRING_LIST[3]}
-L 22 -s 0 -r -O -A i -N 100 -n

I wonder if your doing this all within a loop and loosing the changes due to Bash sub-shell: variables lost
Yes it is in a loop. I am trying to accumulate a list of commands to run later.

The post you linked to is interesting. I am sure I have done this kind of thing before, meaning accumulated data in an array from inside a loop. A loop is the most likely place where you would want to push allot of data into a structure. I do remember having some issues with the syntax before since I don't do it very often, but I don't remember it not working. Perhaps it matters where the array is declared. Is this like c++ where a variable declared in {} will not be in scope outside of the {}?

I will try to look for some other scripts where I have this method working.

LMHmedchem
# 4  
Old 03-11-2015
It also seems that a simple string, rather than an array, might be a simpler approach here. When you get to the point that you want to invoke a command, I would assume that you would want -L 22 -s 0 -r -O -A i -N 100 -n to be eleven separate arguments to that command; not a single argument.
# 5  
Old 03-11-2015
You may want to assign the results of the entire loop to a variable/array.

Previous Thread | Next Thread
Test Your Knowledge in Computers #687
Difficulty: Medium
In comparison testing of reverse Polish notation with algebraic notation, reverse Polish has been found to lead to slower calculations.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Adding to an array in an external file, and adding elements to it.

I have an array in an external file, "array.txt", which contains: char *testarray={"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};I want to be able to add an element to this array, and have that element display, whenever I call it, without having to recompile... (29 Replies)
Discussion started by: ignatius
29 Replies

2. UNIX for Beginners Questions & Answers

Unset array element and save to file in Bash

#!/bin/bash X=(2H 4S 10D QC JD 9H 8S) How do I unset the 10D from this array and save it to a file? Please use CODE tags as required by forum rules! (5 Replies)
Discussion started by: cogiz
5 Replies

3. UNIX for Advanced & Expert Users

Array Element

This question is for someone that's more familiar with Array Element. I need to know if the maximum array element that can be assigned is 1024 and if its so, Is there a workaround solution when the counter exceeded 1024? param_array="$param_nam" counter=$counter+1 #to avoid space... (3 Replies)
Discussion started by: cumeh1624
3 Replies

4. Shell Programming and Scripting

Bash question: working with an array of previously set variable strings

while i've used arrays to work with variables, i've never used them to loop through a set of strings and wanted to ask the community for some feedback or assistance. let me be specific. here's my code: # URL port Variables port2195=`nc -z $url2195 2195` port2196=`nc -z $url2196 2196`... (5 Replies)
Discussion started by: hungryd
5 Replies

5. Shell Programming and Scripting

Adding Content to Variable (bash)

is this possible? its kind of like incrementing the value of a number in a variable. but in this case, instead of the value of the variable being a number, it's just contents/strings/characters/alpha-numeric etc. NOT a number. For instance: VAR=Tommy for all in $(blah blah) do ... (2 Replies)
Discussion started by: SkySmart
2 Replies

6. 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

7. Shell Programming and Scripting

How to assign an array element to a variable

Hi every one.. I'm new to shell scripting... I would like to assign a single array element to a variable... Is it possible to do it.... Could any body help me.... (3 Replies)
Discussion started by: kaushik_87
3 Replies

8. Windows & DOS: Issues & Discussions

Array element & string variable

Hello, I am trying to assign $string = $a; #a= 10100 print " $string"; # showing 10100 I am using this $string as $result = index($string, $char, $offset); As above, is not capturing binary nos. in following format; $string = '10100'; so index is not working. kindly suggest. (5 Replies)
Discussion started by: shristi
5 Replies

9. Shell Programming and Scripting

saving awk value in a bash array variable

hi all i am trying to save an awk value into an array in bash: total=`awk '{sum+=$3} END {print sum}' "$count".txt"` ((count++)) the above statement is in a while loop.. $count is to keep track of file numbers (1.txt,2.txt,3.txt,etc.) i get the following error: ./lines1:... (1 Reply)
Discussion started by: npatwardhan
1 Replies

10. Shell Programming and Scripting

Adding array element in KSH

All, I would like to add the first 10 elements of an array. Here is how I am doing it now (only included first few add ops): #!/usr/bin/ksh ###Grab the array values out of a file### TOTAL=`awk '/time/' /tmp/file.out | awk '{print $4}'` set -A times $TOTAL SUM=$((${times} + times... (3 Replies)
Discussion started by: Shoeless_Mike
3 Replies

Featured Tech Videos