Sponsored Content
Top Forums Shell Programming and Scripting Assign user input to already declared array Post 302553468 by Corona688 on Wednesday 7th of September 2011 05:05:36 PM
Old 09-07-2011
BASH is a string language with weak types, so copying an entire array around like that means having to handle it as a string.

There is an operator to turn an array into one string: "${ARR[*]}" But how're you going to do that when all you have is the name of the array, not the array itself? "${!ARR[*]}" doesn't work, the precedence is wrong, and you can't put the[*] outside it to do it backwards. You could shove it all into an eval, which can accomplish any weird syntax you want, but would be difficult. And then you have to turn it back into an array, wrapping it in another layer of stuff.

It's easy to turn a string into an array, though, and BASH has the ! operator to turn a variable name into a variable string. So why not keep your data as strings for easy retrieval?

Code:
#!/bin/bash

# Not arrays -- just strings.  Split them later.
colors="red blue yellow"
red="cherry fire"
blue="baby sky"
yellow="canary banana"

# This variable is used to read other variables.
name="colors"

while [ ! -z "${!name}" ]
do
        # Fill an array with variable name stored in 'name'.
        # i.e. When it's 'colors', it gets filled with ( red blue yellow )
        ARR=( ${!name} )
        echo "Choose a color counting from 0: ${ARR[*]}"
        read choice
        name="${ARR[$choice]}"
done

This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sh shell user input and stote it to a array

Dear Friends, I am doing a sh shell script , But I dont have any idea how to read value from user Keyboard and store them to an array .. Is it possible or not I am not also sure in sh shell script ? EX:- #! /bin/sh read DATA echo "DATA -" $DATA echo "DATA -" $DATA echo "DATA... (7 Replies)
Discussion started by: user_prady
7 Replies

2. UNIX for Dummies Questions & Answers

How to display values from user input array?

Hi all, I wrote a script that reads inputs from user and store in array named "input". The number of elements in the array is not fixed - determined only after user exit the while loop that reads the array values : x=1 echo "Enter first value" read input while } != "exit" ] do ... (1 Reply)
Discussion started by: luna_soleil
1 Replies

3. Shell Programming and Scripting

How to assign a variable to an array

I want to ask the user to enter an X amount of file names. I want to put those names into an array and then loop back through them to verify they are in the directory. 1st- How would I assign the value to an array and what is the correct syntax. 2nd- how would i reference that array after I... (3 Replies)
Discussion started by: tvb2727
3 Replies

4. Shell Programming and Scripting

assign value to array variable

Hi, I have a piece of code as follows: i=0 while read LINE do var = "$LINE" i=$((i+1)) echo "${var}" done < file I want to assign value to the array var. However, when i execute the script i get a error. Please can you help me know what i am missing. I ultimately want to... (2 Replies)
Discussion started by: sunrexstar
2 Replies

5. Programming

assign array with a local var???

Hi all, I am just wondering is this (below code) valid in programming int xx = 10110; int i; long yy = {1,2,3,4,5,6,7,8,xx}; I compiled this using gcc will all working option successfully without getting any warning or error. I didn't see this kind of code in my past... (7 Replies)
Discussion started by: zing_foru
7 Replies

6. Shell Programming and Scripting

Assign value to array separated by #

Hi all , I have a string like para1#para2#para3 i want to assign para1 as first element para2 as second and so on i tried IFS=# set -A array para1#para2#para3 echo ${array} para1 para2 para3 i want echo ${array} para1 (2 Replies)
Discussion started by: max_hammer
2 Replies

7. Shell Programming and Scripting

every time user input create array perl

Hi, How to create array every time user input and store user input and display all array print " Enter input " my @input = split(' ', $input) chmop($input = <STDIN>; foreach ($input) { @array= @input; } print @array"\n"; (1 Reply)
Discussion started by: guidely
1 Replies

8. Shell Programming and Scripting

create an array which can store the strings from the user input in shell script

I want to create an array which can store the strings from the user input in shell script . example :- I want to store the 5 fruits name in a single array which the user provides . (1 Reply)
Discussion started by: Pkast
1 Replies

9. Shell Programming and Scripting

How to Assign an shell array to awk array?

Hello All, Can you please help me with the below. #!/bin/bash ARR="No Differences In Stage Between HASH_TOTALS & HASH_TOTALS_COMP For UNINUM:0722075 PROVIDER:5 EXTRACT_DT:30-SEP-12 VER_NUM:1" ARR="No Differences In Stage Between HASH_TOTALS & HASH_TOTALS_COMP For UNINUM:0722075 PROVIDER:5... (14 Replies)
Discussion started by: Ariean
14 Replies

10. Shell Programming and Scripting

How to embed data instead of reading user input from an array?

Hello, I am running under ubuntu1 14.04 and I have a script which is sending given process names to vanish so that I'd see less output when I run most popular tools like top etc in terminal window. In usual method it works. Whenever I restart the system, I have to enter the same data from... (2 Replies)
Discussion started by: baris35
2 Replies
ARRAY_DIFF_ASSOC(3)							 1						       ARRAY_DIFF_ASSOC(3)

array_diff_assoc - Computes the difference of arrays with additional index check

SYNOPSIS
array array_diff_assoc (array $array1, array $array2, [array $...]) DESCRIPTION
Compares $array1 against $array2 and returns the difference. Unlike array_diff(3) the array keys are also used in the comparison. PARAMETERS
o $array1 - The array to compare from o $array2 - An array to compare against o $... - More arrays to compare against RETURN VALUES
Returns an array containing all the values from $array1 that are not present in any of the other arrays. EXAMPLES
Example #1 array_diff_assoc(3) example In this example you see the "a" => "green" pair is present in both arrays and thus it is not in the output from the function. Unlike this, the pair 0 => "red" is in the output because in the second argument "red" has key which is 1. <?php $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "yellow", "red"); $result = array_diff_assoc($array1, $array2); print_r($result); ?> The above example will output: Array ( [b] => brown [c] => blue [0] => red ) Example #2 array_diff_assoc(3) example Two values from key => value pairs are considered equal only if (string) $elem1 === (string) $elem2 . In other words a strict check takes place so the string representations must be the same. <?php $array1 = array(0, 1, 2); $array2 = array("00", "01", "2"); $result = array_diff_assoc($array1, $array2); print_r($result); ?> The above example will output: Array ( [0] => 0 [1] => 1 ) NOTES
Note This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_diff_assoc($array1[0], $array2[0]);. Note Ensure you pass arguments in the correct order when comparing similar arrays with more keys. The new array should be the first in the list. SEE ALSO
array_diff(3), array_diff_uassoc(3), array_udiff_assoc(3), array_udiff_uassoc(3), array_intersect(3), array_intersect_assoc(3). PHP Documentation Group ARRAY_DIFF_ASSOC(3)
All times are GMT -4. The time now is 03:17 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy