ksh: verifying number of parameters passed


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers ksh: verifying number of parameters passed
# 1  
Old 09-17-2008
ksh: verifying number of parameters passed

hi all,

i have a ksh script that takes up to 3 parameters -- only 2 of which are required. what's the simplest way to check if the user passed 2 or 3 parameters?

if 3 parameters are not null then
do this
elif 2 parameters are not null then
do this
else
echo "you need at least 2 parameters"

thanks for you help!
# 2  
Old 09-17-2008
hi again.

maybe i should add that i understand this much:

if [ -n "$1" ]; then

but i'm unclear on how to check for multiple parameters. i've tried different things, searched through this forum and scanned the o'reilly's korn shell book, but cannot find the answer.

thanks.
# 3  
Old 09-17-2008
The variable $# gives the number of the arguments.

Regards
# 4  
Old 09-17-2008
thanks for your response! do you mean something like this? it's not quite working for me. i'm pretty new at this. Smilie


if [ $# == 3 ]; then
QUERY = "$QUERY update user set password=password('$2') where user='$1' and host='$3'"
elif [ $# == 2 ]; then
QUERY = "$QUERY update user set password=password('$2') where user='$1'"
else
echo "At a minimum, you must provide a user and password: chpass <user> <new password>"
fi


thanks.
# 5  
Old 09-18-2008
The comparison operator is wrong, it should be -eq for an integer.
Don't use single quotes for the variables, they prevent the shell to expand them.

Code:
if [ $# -eq 3 ]; then
  QUERY = "$QUERY update user set password=password($2) where user=$1 and host=$3"
elif [ $# -eq 2 ]; then
  QUERY = "$QUERY update user set password=password($2) where user=$1"
else
  echo "At a minimum, you must provide a user and password: chpass <user> <new password>"
fi

For basic usage like this you really should have a read of a book or tutorial regarding shell scripting, a link to some tutorials:

https://www.unix.com/answers-frequent...tutorials.html

Regards
# 6  
Old 09-18-2008
Single quotes inside double quotes are not special, so those should be fine.

Let me remind you of the case statement.

Code:
case $# in 2|3) ;; *) echo "Game over, try again?" >&2;; esac

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script to create runtime variables based on the number of parameters passed in the script

Hi All, I have a script which intends to create as many variables at runtime, as the number of parameters passed to it. The script needs to save these parameter values in the variables created and print them abc.sh ---------- export Numbr_Parms=$# export a=1 while do export... (3 Replies)
Discussion started by: dev.devil.1983
3 Replies

2. Shell Programming and Scripting

Three parameters passed from a script to other at different time

nothing (0 Replies)
Discussion started by: shikha84
0 Replies

3. UNIX for Dummies Questions & Answers

Trouble displaying parameters passed into a for loop

#!/bin/bash function check_num_args() { if ; then echo "Please provide a file name" else treat_as_file $* fi } function treat_as_file() { numFiles=$# for((i=1;i<=$numFiles;i++));do echo $i ... (3 Replies)
Discussion started by: kikilahooch
3 Replies

4. Shell Programming and Scripting

How to check that passed parameters all have the same extension?

$ ls monkey.txt banana.csv tree.txt $ myscript monkey.txt tree.txt All extensions ARE alike. $ myscript *txt All extensions ARE alike. $ myscript monkey.txt banana.csv All extensions are NOT alike. $ myscript * All extensions are NOT alike. My brain has given up; what's the simplest... (11 Replies)
Discussion started by: cs03dmj
11 Replies

5. Shell Programming and Scripting

Parameters passed to commands but not working in Bash shell

Hi, I am trying to do this thing useing my shell bash ( sorry for my english ) I have in a file 63 hostnames, i wanna ask to the DHCP admin, to reserv that reserves 63 IP addresses of this hosts, using their mac address. I have thinked this script: for ((i=1;i<63;i++)); do arp $(head... (10 Replies)
Discussion started by: Cypress
10 Replies

6. Shell Programming and Scripting

Problem with script not able to take parameters passed to it

debug output: (3 Replies)
Discussion started by: dsravan
3 Replies

7. Shell Programming and Scripting

How to read values that are passed to the shell function in ksh.

In ksh shell, There is a function f1. function f1 { How to read here?? .... .... } I am passing values to fuunction f1 as f1 "A" "B" Please tell me how to read the passed values in function f1. Advance Thanks & Regards Prashant (2 Replies)
Discussion started by: prashant43
2 Replies

8. Shell Programming and Scripting

Problem with script not able to take parameters passed to it

when I pass any 2 parameters it always says: Number of parameters passed: 1 and the job_name as x Can some body help? (7 Replies)
Discussion started by: dsravan
7 Replies

9. Shell Programming and Scripting

Extracting passed in parameters

we want to produce a script that we can pass parameters of -a for email address and -s for subject then the report filename, so an exmaple would be; email_report -a sendto@domain.com -s This is a test reportname.txt The problem we have is the subject can have more than one word, so I can't just... (2 Replies)
Discussion started by: spookyrtd99
2 Replies

10. UNIX for Dummies Questions & Answers

Assigning a Variable all the Parameters passed

Hi, I have a unix script which can accept n number of parameters . I can get the parameter count using the following command and assign it to a variable file_count=$# Is there a similar command through which i can assign a variable all the values that i have passed as a parameter ... (2 Replies)
Discussion started by: samit_9999
2 Replies
Login or Register to Ask a Question