Help with bash script problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with bash script problem
# 1  
Old 09-06-2013
Help with bash script problem

Hi,

Below is my bash script:
Code:
[perl_beginner@]cat run_all.sh

if [ $1 !~/+/ ] && [ $2 !~/+/ ]; then
Number_Count_Program $1.results $2.results > $1.$2.counts
else
Number_Split_Program $1.results $2.results > $1.$2.split
fi

After I run the following command:
Code:
./run_all.sh A B
./run_all.sh: line 1: [: A: unary operator expected

Anybody advice to edit my bash script, run_all.sh ?

The purpose I write the bash script is automatic the server run "Number_Count_Program" if first and second argument key in is don't have any "+";
As long as either first or second argument got "+", it will run "Number_Split_Program".

"Number_Count_Program" and "Number_Split_Program" is an c++ program which worked well.
Thanks for any advice.
# 2  
Old 09-06-2013
Code:
if [[ $1 =~ \+ ]] && [[ $2 =~ \+ ]]; then
 echo "got two +'s"
else
 echo "didn't get two +'s"
fi

You can use ! before the tests to negate if you must have it the other way around.
# 3  
Old 09-06-2013
Try something like the following:
Code:
#!/bin/bash

if [[ $1 =~ "+"  &&  $2 =~ "+" ]]
then
     echo "Match"
else
     echo "No Match"
fi

This User Gave Thanks to fpmurphy For This Post:
# 4  
Old 09-06-2013
Hi Scott,

I just try your code edit.
But it seems like the script will run "Number_Count_Program" if I key in something like "./run_all.sh A+B B+C"?

What I prefer is "Number_Count_Program" is run only when both first and second argument don't have any "+".
If either first or second or both got "+", I will prefer it run "Number_Split_Program".

Kindly correct me if I was wrong.
Thanks.
# 5  
Old 09-06-2013
You will have to negate the tests, or swap around the code in your if "then" and "else" blocks.
This User Gave Thanks to Scott For This Post:
# 6  
Old 09-06-2013
The + is special in an ERE.
I found it is necessary to quote and escape the +
Code:
if [[ $1 =~ "\+" && $2 =~ "\+" ]]; then

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Array problem in Bash Script

I am trying to write a Bash Script using a couple of arrays. I need to perform a countdown of sorts on an array done once daily, but each day would start with the numbers from the previous day. This is what I'm starting with : #!/bin/bash days=(9 8 7 6 5) for (( i = 0 ; i < ${#days} ; i++... (4 Replies)
Discussion started by: cogiz
4 Replies

2. Shell Programming and Scripting

Bash/awk script problem

Hi, I have 100 files containing different values in single column, I want to split those files in two separate files (file2 and file3) based on average value of first column of each file, for those files I am working on the following script #bin/bash for memb in $(seq 1 100) do awk... (4 Replies)
Discussion started by: dsp80
4 Replies

3. Shell Programming and Scripting

Problem with Bash Script.

Hi guys! I'm new to the forum and to the Bash coding scene. I have the following code paths=/test/a paths=/test/b keywords=\"*car*\" keywords=\"*food*\" for file in `find paths -type f -ctime -1 -name keywords -print 2>/dev/null` do #.... do stuff here for every $file found... (5 Replies)
Discussion started by: RedSpyder
5 Replies

4. Shell Programming and Scripting

Problem using grep in bash script

When it comes to programing and UNIX, I know just enough to be really really dangerous. I have written a python script to parse through a file that contains ~1 million lines. Depending on whether a certain string is matched, the line is copied into a particular file. For the sake of brevity,... (4 Replies)
Discussion started by: errcricket
4 Replies

5. Shell Programming and Scripting

help with a bash script problem

hi to everyone :) i am new to linux and bash and i am trying to build a bash script, that is quite similar to the well known cmd 'split' ... ;) it is now already "working" ... i can use it like: ./splitfix.sh -v -s 10 foo ./splitfix.sh -s 10 -v foo ./splitfix.sh -s 10 foo ./splitfix.sh -v... (5 Replies)
Discussion started by: drjodo
5 Replies

6. Shell Programming and Scripting

problem using variables in bash script

I am using variable to give the location of the file I am using but I get error. Here is the code: LogFile=/tmp/log.email echo -e "could not close the service - error number $error \n" > $LogFile well this is not all the code but is enough because the problem start when I try to use the... (3 Replies)
Discussion started by: programAngel
3 Replies

7. Shell Programming and Scripting

Simple bash script problem

#!/bin/bash cd /media/disk-2 Running ./run.sh it's not changing directory.Why? (6 Replies)
Discussion started by: cola
6 Replies

8. Shell Programming and Scripting

Problem in bash script

I have written a script and I get error and I don't understand why. neededParameters=2 numOfParameters=0 correctNum=0 while getopts "s:l:" opt do case "$opt" in s) serviceName= $OPTARG #errorline 1 numOfParameters= $numOfParameters + 1 ;; l) ... (12 Replies)
Discussion started by: programAngel
12 Replies

9. UNIX for Dummies Questions & Answers

Bash script argument problem

I'm having problems with bash scripts. If a bash script is called with no arguments, I always get "PHIST=!" as the first argument (i.e. this is what $1 equals). Why? Where does this come from, and how can I fix it? Nothing in the bash man pages refer to this mysterious default argument. (2 Replies)
Discussion started by: sszd
2 Replies

10. Shell Programming and Scripting

bash script problem

hi I am writing a bash script that uses dialog to get user input an diplay messages to user. I have a small problem dialog --inputbox "blabla" 20 50 2> /tmp/output VAR="'cat /tmp/output'" mkdir $VAR the code below requests user for a directory path to be created. But, if the user uses... (1 Reply)
Discussion started by: fnoyan
1 Replies
Login or Register to Ask a Question