OPTIND in ksh script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting OPTIND in ksh script
# 1  
Old 04-22-2011
OPTIND in ksh script

I have a script that uses this command in a ksh script "shift OPTIND-1". When running this script, I am getting this error "shift: OPTIND-1: numeric argument required".

I am using ksh on Red Hat 5. Is OPTIND not supported on RHEL5 or should I use a different variable in place of OPTIND.

Thanks for your help.
# 2  
Old 04-22-2011
Hi.

OPTIND is used by getopts. Why would you be using it like this?

As a shell variable, it seems to be set to 1 (for what purpose I don't know!), so 1 minus 1 equals 0:

Code:
$ cat myscript
shift $((${OPTIND}-1))
echo $@

$ ./myscript 1 2 3
1 2 3

# 3  
Old 04-22-2011
Thanks for reply. This is the part of script where it fails:

Code:
while getopts hc:k:M:p opt
do
  case $opt in
    (\?) syntax 1;;
    (h) syntax 0;;
    (c) cpath=$OPTARG;;
    (k) ckey=$OPTARG;;
    (M) makefile=$OPTARG;;
    (p) p_oneline=Y;;
  esac
done
shift OPTIND-1

The script fails at the last line with an error 'shift: OPTIND-1: numeric argument required'. I have set the variable OPTIND to 1 at the prompt.


Last edited by Scott; 04-22-2011 at 06:54 PM.. Reason: Please use code tags
# 4  
Old 04-22-2011
$OPTIND (the variable - with $) contains a number, "OPTIND" (without the $) is just a string.

shift expects a number, so:
Code:
shift $((OPTIND-1))


Last edited by Scott; 04-26-2011 at 05:34 PM..
# 5  
Old 04-22-2011
Thanks. Why the same script works just fine on RHEL3 without OPTIND set to 1? Is there any config file I am missing for ksh to set the values upfront?
# 6  
Old 04-22-2011
Hi.

I don't know how that worked in RHEL 3, or anywhere else.

OPTIND seems to be defaulted to 1, but that's not relevant, since (quote):

Code:
OPTIND The index of the last option argument processed by the getopts built-in command.

I'd be surprised if shift OPTIND-1 worked anywhere, since, as a variable it's value would be accessed as $OPTIND, and as OPTIND (without the $) is a literal string, and shift requires a number.
# 7  
Old 04-25-2011
Thanks scottn.

The same script works just fine on RHEL3 and other UNIX versions and I am also surprised to see why its not running on RHEL5 Smilie

Is there any configuration file or setting that tells 'shift' to treat OPTIND as a variable that you may be aware of?

Thanks again for your help.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script to replace lines in ksh Script

Hi All, I am novice to Unix and I need your expert advice for the below task. There is a KSH script file in which I need to replace few line as per the below expectations. So my file look like as # Host Setup Command: Line 1 Line 2 Line 3 Line 4 Line Any... (6 Replies)
Discussion started by: rupid0609
6 Replies

2. Shell Programming and Scripting

Deploy ksh script to file from other script

Hi all, I need to deploy two scripts on around ~100 machines and have only OPSware. Opsware have the option to execute a script, so I am trying to write a script which dose cat > script.ksh <<EOF script to be deployed EOF However the script between the two EOFs gets also executed which... (0 Replies)
Discussion started by: click
0 Replies

3. Shell Programming and Scripting

Help Create dynamic ksh script from a script

I am currently running 2 scripts to gather data for a 3rd script and would like to combine the 2 scripts into one. Having issues with the final output format. Note cannot post URL so replaced the http stuff with (name) in the examples All scripts contain #!/bin/ksh OS = Red Hat Enterprise... (0 Replies)
Discussion started by: pcpinkerton
0 Replies

4. Shell Programming and Scripting

KSH script to run other ksh scripts and output it to a file and/or email

Hi I am new to this Scripting process and would like to know How can i write a ksh script that will call other ksh scripts and write the output to a file and/or email. For example ------- Script ABC ------- a.ksh b.ksh c.ksh I need to call all three scripts execute them and... (2 Replies)
Discussion started by: pacifican
2 Replies

5. Shell Programming and Scripting

passing a variables value from the called script to calling script using ksh

How do i get the value of the variable from the called script(script2) to the calling script(script1) in ksh ? I've given portion of the script here to explain the problem. Portion of Script 1 ============= ----- ----- tmp=`a.ksh p1 p2 p3` if then # error processing fi -----... (10 Replies)
Discussion started by: rajarkumar
10 Replies

6. Shell Programming and Scripting

import var and function from ksh script to another ksh script

Ih all, i have multiples ksh scripts for crontab's unix jobs they all have same variables declarations and some similar functions i would have a only single script file to declare my variables, like: var1= "aaa" var2= "bbb" var3= "ccc" ... function ab { ...} function bc { ... }... (2 Replies)
Discussion started by: wolfhurt
2 Replies

7. Shell Programming and Scripting

tracing a ksh script within a ksh script

I normally trace a script with the ksh -x <script name> and redirect strderr to file. But if you have a script like the examble below...... vi hairy bear=`grep bear animals` if then ksh more_animals fi If I ksh -x hairy it won't trace "more_animals" unless I put a -x in it. Is... (1 Reply)
Discussion started by: shorty
1 Replies

8. Shell Programming and Scripting

how to convert unix .ksh script to windows .batch script

I am using awk in my .ksh script but when I am trying to run in windows its not recognising awk part of the ksh script , even when I changed it to gawk it does not work, this is how my .ksh and .bat files look like. thanx. #!/bin/ksh egrep -v "Rpt 038|PM$|Parameters:|Begin |Date: |End... (1 Reply)
Discussion started by: 2.5lt V8
1 Replies

9. Shell Programming and Scripting

executing a ksh script from another ksh script

Hi, I'm new to unix scripting.How can i call a script from another script. I have a.ksh and b.ksh .I have to call b.ksh from a.ksh after it is successfully exceuted. I tried using #!/bin/ksh -x in a.ksh and at the end i have used /path/b.ksh My problem is it is executing only a.ksh.it... (6 Replies)
Discussion started by: ammu
6 Replies

10. UNIX for Dummies Questions & Answers

SQL Script run in KSH Script

I've got a SQL script that is executed through a UNIX ksh script. It is working fine, but I wanted to add a line to put a date/time stamp in the log file that it generates. This is more of a SQL question, but I'm hoping someone can help me get the date/time...I've changed the script with the... (2 Replies)
Discussion started by: dstinsman
2 Replies
Login or Register to Ask a Question