getopts in a subshell


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting getopts in a subshell
# 1  
Old 02-16-2011
getopts in a subshell

Hello,

I've a little problem with one of my ksh scripts and I manage to narrow it to the script here:
Code:
#!/bin/ksh
writeLog()
{
  paramHandle="unknown"
  OPTIND=1
  while getopts :i: option $*
  do
    case $option in
      i)  paramHandle=${OPTARG} ;;
    esac
  done
  echo ${paramHandle}
}

logHandle="known"
writeLog -i ${logHandle}
( writeLog -i ${logHandle} )
writeLog -i ${logHandle}

The result of this script is
Code:
known
known
unknown

whereas I'm waiting for
Code:
known
known
known

Could someone explain me why running the function in a subshell result in a malfunctionning of getopts ?

Thanks in adavance
# 2  
Old 02-16-2011
This is working as expected for me:
Code:
$ echo $KSH_VERSION
Version JM 93t+ 2010-03-05
$ ./little_program 
known
known
known


Also works OK with
  • ksh version M-11/16/88,
  • pdksh version 5.2.14 99/07/13.2
  • bash 4.1.9(3)-release, 3.2.51(24)-release and 3.2.16(1)-release

Last edited by Chubler_XL; 02-16-2011 at 07:41 PM..
This User Gave Thanks to Chubler_XL For This Post:
# 3  
Old 02-17-2011
Thanks ...
Code:
$ ksh --version
  version         sh (AT&T Research) 93s+ 2008-01-31

I tried with bash and it works ...
Code:
$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)

I found those bugreports that seems to address the same issue:
bugzilla.redhat.com/show_bug.cgi?id=443889
bugzilla.redhat.com/show_bug.cgi?id=541654

This may be corrected with two ksh bug-fixes
rhn.redhat.com/errata/RHBA-2009-1256.html
rhn.redhat.com/errata/RHBA-2010-0234.html

I'l try to see with my sysadmin if he can update ksh.
If not, as I'm tied with ksh, I'll be doomed to find a workaround Smilie

(Sorry I couldn't use the full url as I don't have enough posts on this board Smilie)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help sending mail through subshell

Hey I have a shell script that is like this: ( echo "hi!" ##DO SOMETHING )&( sleep 5 ##EMAIL RECIPIENTS VARs ERECIPIENT3="email.com" echo "Connection on status: is Down"|mail -s "Subject:" ${ERECIPIENT3} kill -- -$$ ) This isn't working anyone know why? mail won't go out from... (12 Replies)
Discussion started by: mo_VERTICASQL
12 Replies

2. Shell Programming and Scripting

How will these subshell commands behave?

Hello, I am firing off some scripts from a main script, cd B/ ./EV_B_m0-m200_hex1.sh & ./EV_B_m0-m200_hex2.sh & wait ...more It would be useful to put a bit of time between the two to clean up the output to the terminal. I think this would work, cd B/ ... (4 Replies)
Discussion started by: LMHmedchem
4 Replies

3. Shell Programming and Scripting

Executing a command in subshell

Hi All, I am trying to create a shell script which runs on my linux machine. The requirement is so that, ade createview xyz -> this steps creates a view ade useview xyz -> we are entering inside the view ade begintrans -> begin a transaction My script has following code : lets say... (2 Replies)
Discussion started by: Dish
2 Replies

4. Shell Programming and Scripting

Getopts in the subshell of ksh

Hi, the getopts doesnt seem to be working in the subshell of the ksh. when I echo $@ and $* from the subshell it shows nothing. even when I am capturing the parameters from the outer shell and passing while invoking the file then I am still not getting it properly. the below code is in the... (9 Replies)
Discussion started by: hitmansilentass
9 Replies

5. Shell Programming and Scripting

Basename in subshell

Hi All, I would like to improve my bash scripting skill and found a problem which I do not understand. Task is to search and print files in directory (and subdirecories) which contains its own name. Files can have spaces in name. This one works fine for files in main directory, but not for... (4 Replies)
Discussion started by: new_item
4 Replies

6. Shell Programming and Scripting

While loop subshell problem

Hi, I have the below script while true; do read -p "Please enter schema password: " -s -e pswd1 echo read -p "Please retype schema password: " -s -e pswd2 echo && { echo -e "password mismatch.\n"; continue; } validateOraclePassword $pswd1... (2 Replies)
Discussion started by: varu0612
2 Replies

7. Shell Programming and Scripting

Killing a subshell

I am calling a script from with another script and reading its output one line at a time (using <childscript> | while read line) in the parent script. If the output exceeds a predefined number of lines I want to kill the child shell from within the parent shell. I decided to print the process ID... (2 Replies)
Discussion started by: slash_blog
2 Replies

8. Shell Programming and Scripting

Passing arguments to the subshell

I have a shell script which is invoked by passing an argument. The outer shell script calls another subshell and I want the argument passed down to flow down to the subshell. E.g Invoking a shell ======>> abc_refresh.ksh NM Below is the content of abc_refresh.ksh Value1=$1... (7 Replies)
Discussion started by: Mihirjani
7 Replies

9. Shell Programming and Scripting

passing of a varibale to subshell

Hi All, I need some info. Could you please tell me how to use the variable of a parent shell in the subshell. Also can we modify the variable in the subshell ? If yes, will the modified variable visible in the parent shell I am using two prg. a.sh #!/usr/bin/ksh temp_var="abhishek"... (3 Replies)
Discussion started by: AbhishekG
3 Replies

10. Shell Programming and Scripting

Subshell Question

The profile of the user is empty. Then before I run the script I want I run a parameter file that populates the variables for oracle. ORACLE_HOME ORACLE_BASE ORACLE_SID PATH etc ... But it seems that these variables are not making it to the shell I am in because when I do an echo on... (6 Replies)
Discussion started by: lesstjm
6 Replies
Login or Register to Ask a Question