Using arrays in bash using strings to bash built-in true


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using arrays in bash using strings to bash built-in true
# 22  
Old 03-28-2012
Quote:
Originally Posted by Corona688
That won't do what you want then, no.
It looks like I have to set some hard defaults before checking the user options.

Then set other mandatory variables after checking the user values by searching in the local directory if user did not specify them.

So there are things that are mandatory for the script but not mandatory for the user.

For this reason I am thinking of setting any default values at the beginning, then checking user options, after which I set any variables or defaults
that are based on the user options.

Should you have a more sensible idea about this, it would be great for me to go for it.
# 23  
Old 03-28-2012
Why not search first then, if the user inputs them, replace the value.

Fewer decisions that way.
# 24  
Old 03-28-2012
Quote:
Originally Posted by Corona688
My script wasn't interactive.

It was just one way to do a loop, so instead of doing a million lines of "if this variable is blank, then set that default" you repeat one loop a million times on different values.
I see, just got confused on the part having
Code:
 
read VAR <<<"$STR"

I understand it now. Everything is dome from the file settings.

---------- Post updated at 02:05 PM ---------- Previous update was at 01:58 PM ----------

Quote:
Originally Posted by Corona688
Why not search first then, if the user inputs them, replace the value.

Fewer decisions that way.
That's a good point. My thinking was that I avoid doing searches when the user specifies the files he wants. Your idea still helps, as everything would then be sectioned nicely in blocks, which is something I have ended to favour.
# 25  
Old 03-28-2012
@Kristinu, in your original post, use:

Code:
  "--"[cC][mM][oO][dD]|\
  "--"[cC][mM][oO][dD]"-"[iI][fF][lL])
    shift
    value["cmodInfl"]="${1}"
    hasArgument["cmodIfl"]=true
  ;;

And so on for all the other array elements..

Otherwise it all gets assigned to array element 0.

*edit* this assertion is incorrect..

Last edited by Scrutinizer; 03-29-2012 at 07:44 AM..
# 26  
Old 03-28-2012
Quote:
Originally Posted by Scrutinizer
@Kristinu, in your original post, use:

Code:
  "--"[cC][mM][oO][dD]|\
  "--"[cC][mM][oO][dD]"-"[iI][fF][lL])
    shift
    value["cmodInfl"]="${1}"
    hasArgument["cmodIfl"]=true
  ;;

And so on for all the other array elements..

Otherwise it all gets assigned to array element 0.
If I declare the arrays as associative using the setting below, I get no problems if I just use value[cmodInfl]. However, if the string involves spaces, then one should use double quotes such as for value["cmod Infl"]
Code:
declare -A value 
declare -A hasArgument

# 27  
Old 03-28-2012
Yes that is right, declare, I was looking for the bash 4 equivalent of ksh93's typeset -A good you found the answer. Is it working as expected now?
# 28  
Old 03-29-2012
I thought it was ok, however corona suggested it is not the way to do things. Just assign default in the beginning and then if the user chooses the option overwrite it. He also suggested that checking should be done on the value string directly. If it is not set, then the option was not used.

I think I need to put a full example as things are very complicated.

---------- Post updated at 06:03 AM ---------- Previous update was at 05:19 AM ----------

Quote:
Originally Posted by Corona688
BASH doesn't have boolean types. The existence of a program named 'true' doesn't change this.

BASH doesn't have associative arrays, either. You can't use words as array indexes.
The following code did work, returning

Code:
hasArgument[mytest0] set to 0
hasArgument[mytest1] set to 1

Code:
declare -A hasArgument

hasArgument[mytest0]=false
hasArgument[mytest1]=true

if ! ${hasArgument[mytest0]}; then
  echo "hasArgument[mytest0] set to 0"
fi

if ${hasArgument[mytest1]}; then
  echo "hasArgument[mytest1] set to 1"
fi


Last edited by kristinu; 03-29-2012 at 07:26 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

bc,getopt and arrays in bash

trying to sum elements in an array using bc and getopt,i have a file with names and thier vaules if the names appears 3 times i should multiply its value with 3 then find the sum of all the elements together cat foo.txt max 2.3 henry 3 fransis 4.5 max 2.3 henry 3 max 2.3 it should... (1 Reply)
Discussion started by: elginmulizwa
1 Replies

2. Shell Programming and Scripting

How to make arrays from strings in bash?

Hey all, This is my first post, and I am relatively new to linux/unix scripts. I am writing a bash script in which I am trying to extract one line from another file and parse specific words from the line into an array. So for example, I have a file called SortScans in which the first 5 lines... (9 Replies)
Discussion started by: camocazi
9 Replies

3. Shell Programming and Scripting

bash built-in

Is there any command or VARIABLE in unix to display only bash builtin commands?. Some days back I worked on that, but now I do not remember. Can anyone please reply for this?... (4 Replies)
Discussion started by: gwgreen1
4 Replies

4. Shell Programming and Scripting

Yet another bash arrays question

Hi all, I have a file that contains many lines, but only a few are of my interest, so I'm cutting it with grep + awk, and the result I get is for example line 0 line 1 line 2 line 3 line n Now I want to store each line in an array "cell" so I can use it later calling to ${array},... (2 Replies)
Discussion started by: TuxSax
2 Replies

5. Shell Programming and Scripting

subtraction in bash arrays

hi i am using bash shell to perform some subraction. here is what i have: i have a while loop and am using i as a counter. diff= `expr ${ARRAY1} - ${ARRAY2}` for example array1 has -0.7145 and array2 has -0.7041. when i try the above command, i get expr: non-numeric argument. any... (6 Replies)
Discussion started by: npatwardhan
6 Replies

6. Shell Programming and Scripting

arrays in bash

hi guys, i have the following script and when i run it i get blank lines on the screen.. i am trying to display the contents of array var.. #!/usr/bin/bash var=`awk 'NR>20&&NR<31' try.sum | awk '{print $4}'` echo "${var}" (1 Reply)
Discussion started by: npatwardhan
1 Replies

7. Shell Programming and Scripting

Searching Bash Arrays

Hi, I am writing a bash shell script. I would like to execute a statement only if an array contains a specific value. For example: array=(1 3 5 7) I would like to execute the statement only if the value 3 is present in ${array}. Thanks for any help, Mike (1 Reply)
Discussion started by: msb65
1 Replies

8. Shell Programming and Scripting

Arrays in bash.need help

:confused: Is it possible to delete array elements dynamically.For instance,consider an array( a b c d ) ,now can i delete array (the third element 'c').So that the array becomes array(a b d).. Thanks in advance!! (1 Reply)
Discussion started by: tj23
1 Replies

9. Shell Programming and Scripting

comparing two arrays or strings in bash

Hi there, im having issue with comparing two variables, in a bash script. im trying to do the following: - get a word from user 1 - split the word into array - get a character from user2 trying to compare the character entered by user 2 with every single character in the array... (2 Replies)
Discussion started by: new2Linux
2 Replies

10. Shell Programming and Scripting

Bash: Exiting while true loop when terminal is not the focus window

I am running an Ubuntu Gutsy laptop with Advanced Compiz fusion options enabled. I am using xdotool to simulate keyboard input in order to rotate through multiple desktops. I am looking for a way to kill a while true loop when the Enter key (or Control+C if it is easier) is pushed when the... (2 Replies)
Discussion started by: acclaypool
2 Replies
Login or Register to Ask a Question