Check for spaces in input argument!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Check for spaces in input argument!
# 1  
Old 02-06-2014
Check for spaces in input argument!

Hi guys,
I have created a csh script which allows user to pass input argument with the script like:
Code:
cluster_on_lev3.csh  -t <value> -p <value>
Example: 
cluster_on_lev3.csh  -t 2.3 -p 0.05

Now I want to create an error code where if user passes input argument without spaces , the code should exit. Example: cluster_on_lev3.csh -t2.3 -p0.05. In this situation where the space is missing after -t and -p, the code should exit.
Thank you very much in advance.
# 2  
Old 02-06-2014
Programming in csh is very much not reccomended. It is an obsolete and very faulty shell which people just refuse to stop using... These are not bugs but insurmountable design flaws. Every variety of UNIX comes with the Bourne shell, it wouldn't be UNIX if it didn't, you'd do well to learn it.

Show your code.
# 3  
Old 02-06-2014
The whole code is:
Code:
#!/bin/csh
if (${#argv} < 1) then
    USAGE:
    echo "USAGE: cluster_on_lev3.csh -dir <full_path Lev3 gfeat cope directory> [options]"
    echo "USAGE: cluster_on_lev3.csh -dir <full_path Lev3 gfeat cope directory> -t <value> -p <value> -c <value> -l <value> -h <value>"
exit -1 
endif
while ( $#argv != 0)
	set flag = $argv[1]; shift;
	switch ($flag)
	case "-dir":
	    set lev3cope = $argv[1]; shift;
	    breaksw
	case "-t":
	    set thresh = $argv[1]; shift;
	    breaksw
	case "-p":
            set pvalue = $argv[1]; shift;
	    breaksw
	case "-c":
            set conn_voxels = $argv[1]; shift;
	    breaksw
	case "-l":
            set zmin = $argv[1]; shift;
	    breaksw
	case "-h":
            set zmax = $argv[1]; shift;
	    breaksw
	endsw
end

I just want to put a check to make sure the sure is passing input argument with the space i.e -t 2.3 instead of -t2.3
# 4  
Old 02-06-2014
How does this work:
Code:
#!/bin/csh
if (${#argv} < 1) then
    USAGE:
    echo "USAGE: cluster_on_lev3.csh -dir <full_path Lev3 gfeat cope directory> [options]"
    echo "USAGE: cluster_on_lev3.csh -dir <full_path Lev3 gfeat cope directory> -t <value> -p <value> -c <value> -l <value> -h <value>"
exit -1 
endif
while ( $#argv != 0)
	set flag = $argv[1]; shift;
	switch ($flag)
	case "-dir":
	    set lev3cope = $argv[1]; shift;
	    breaksw
	case "-t":
	    set thresh = $argv[1]; shift;
	    breaksw
	case "-p":
            set pvalue = $argv[1]; shift;
	    breaksw
	case "-c":
            set conn_voxels = $argv[1]; shift;
	    breaksw
	case "-l":
            set zmin = $argv[1]; shift;
	    breaksw
	case "-h":
            set zmax = $argv[1]; shift;
	    breaksw
        default:
            echo "Unknown option" $argv[1]
            exit 1
            breaksw
	endsw
end

# 5  
Old 02-06-2014
The way it works is:
Example: If the user types:
Code:
cluster_on_lev3.csh -dir /home/shared -t 2.3 -p 0.05 -c 26 -l 2"

The above code checks for arguments such as -dir, -t, or -c in the Case statement and shifts to set the input variable passed by the user. I also have the part of the code to have the default values when the argument is not been used.
All I want is to prompt the user in case he didn't use the space with the argument. That is the code exits when user passed:
Code:
 cluster_on_lev3.csh -dir /home/shared -t 2.3 -p 0.05 -c26 (incorrect) -l2 (incorrect)

I understand moving away from csh is the best way and I am migrating to bash, but this is someone else's script and I have been asked to do modifications. Thanks for understanding.

Last edited by Scrutinizer; 02-06-2014 at 04:02 PM.. Reason: code tags
# 6  
Old 02-06-2014
Yes, so have you tried the script I gave you... It should flag any arguments it doesn't recognize.
# 7  
Old 02-06-2014
Hi, Sorry about this but I didn't receive any script from you. Pardon me if I have missed something in your email.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to iterate a function untill last argument with any order of input?

HI I need to get the function "kick" to get executed in any way the parameters are passed in to the function. The parameters are first stored in a dictionary self.otherlist = {} print self.otherlist self.populateTestList(self.system_type) print... (1 Reply)
Discussion started by: Priya Amaresh
1 Replies

2. Shell Programming and Scripting

Argument check

All, I'm writing an argument checking block and running into an error. I want to confirm that $1 is one of two values. Here is what I have: if ]; then echo -e "\nPlease check your first augument. You used \"$1\" which is not recognized. Please see usage:" usage ... (9 Replies)
Discussion started by: hburnswell
9 Replies

3. Shell Programming and Scripting

Utilize input file in place of argument

First I apologize for my ignorance as I am very new to the world of UNIX but love it and have a huge desire to learn it. A question I have is if a Korn script utilizes/relies on an argument to run, can you add these into a file and pipe them to the script without changing anything inside the... (2 Replies)
Discussion started by: djzah
2 Replies

4. Shell Programming and Scripting

Renice command with input argument as a file

Hi all could you help me how to give pids in a file as an argument to renice command. Thanks in Advance.. :) Pradeep (4 Replies)
Discussion started by: nanz143
4 Replies

5. Shell Programming and Scripting

The last argument contains spaces, how do I get it into a variable?

Gooday I have an argument string that contains 15 arguments. The first 14 arguments are easy to handle because they are separated by spaces ARG14=`echo ${ARGSTRING} | awk '{print $14}'` The last argument is a text that may be empty or contain spaces. So any ideas on how I get the last... (23 Replies)
Discussion started by: zagga
23 Replies

6. Shell Programming and Scripting

use input filename as an argument to name output file

I know this is a simple matter, but I'm new to this. I have a shell script that calls a sed script from within it. I want the output of the shell script to be based on the input file I pass as an argument to the original script. In other words... ./script.sh file.txt (script.sh calls sed... (2 Replies)
Discussion started by: estebandido
2 Replies

7. Shell Programming and Scripting

problem with spaces and argument parsing

public class HelloWorld { public static void main(String args) { System.out.println("Welcome, master"); } } and I compiled using javac HelloWorld.java ] Suppose that I execute the following command directly from the shell: java -XX:OnError="gdb - %p" HelloWorld Then it works... (8 Replies)
Discussion started by: fabulous2
8 Replies

8. Shell Programming and Scripting

Check if argument passed is an integers

How do I check if the argument passed to a script is an integer? I am writting a script that will take to integers and want to be able to check before I go on. I am using bourne shell. Thanks in advance (13 Replies)
Discussion started by: elchalateco
13 Replies

9. Programming

How do I input an argument in the main?

----------C program----------------------------- include <stdio.h> int main( int argc, char *argv ) { int i; for( i=0; i<argc; i++ ) printf("%\n", argv); return 0; } I wrote the C program above 'print.c'. Then, I compiled. (gcc -o print.o print.c)... (2 Replies)
Discussion started by: yhosun
2 Replies

10. UNIX for Dummies Questions & Answers

how to check if the argument contain wildcard (*,?) ?

In a script , i would like to check if the argument ( $1, $2 inside the script) contain wildcard (*,? etc). how do i do it? > script_name arg1 arg* $1 (arg1) does not contain wildcard, but $2 (arg* )contains wildcard. how can i tell in script? i need to do this is because : if arg1... (3 Replies)
Discussion started by: gusla
3 Replies
Login or Register to Ask a Question