optargs processing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting optargs processing
# 1  
Old 03-25-2010
optargs processing

Hello i'm writing some analyzing script and i'm giving to my program these parameters, for example:

./procinfo -r tmpfile sh -c "cat tmpfile"

where -r is proccessed in getopts and it takes an argument by OPTARG..
The thing is I need to save this part to some variable:

sh -c "cat tmpfile"

I've tried it as ( after shifting, of course - shift $(($OPTIND - 1)) )

VARIABLE="$*"
or other ways..
$*
$@
"$@"

It only saves the part but WITHOUT the quotation marks and that's why i'm writing here..
Do you know, where the problem could be?
I'm pretty confused by that :/
thanks for answers!
# 2  
Old 03-25-2010
IMHO this is incomprehensible.

What Operating System are you using? This may lead is towards the syntax for "procinfo". Of course "procinfo" could be a local script in which case please post the script. If it's a script, please post what script language you use.


Please re-phrase the initial post showing what input you have, what processing you desire, and what output you expect.

If your test doesn't work, please show what you typed, what you expected to happen, and what actually happened - also showing any error messages.

Last edited by methyl; 03-25-2010 at 10:58 PM..
# 3  
Old 03-25-2010
I don't understand it as well.
Totally new file:

$ cat new
echo "$@"
echo $@
echo "$*"
echo $*

./new -r. sh -c "cat tmpfile"

-r. sh -c cat tmpfile
-r. sh -c cat tmpfile
-r. sh -c cat tmpfile
-r. sh -c cat tmpfile

Of course I need this output:

-r. sh -c "cat tmpfile"

Tried Linux and Solaris server. Shit happens. I don't get it at all.
If anything "procinfo" script is here

Last edited by midin; 03-25-2010 at 11:08 PM..
# 4  
Old 03-26-2010
I think I almost understand.

Try these single quotes to protect the double quotes from the shell.

Code:
./new '-r. sh -c "cat tmpfile"'

-r. sh -c "cat tmpfile"
-r. sh -c "cat tmpfile"
-r. sh -c "cat tmpfile"
-r. sh -c "cat tmpfile"


Note that I have cut/paste from your most recent post. The actual command string makes no sense whatsoever but the problem you describe appears to be about preserving double quote characters.

---------- Post updated at 04:48 ---------- Previous update was at 04:05 ----------


========================================================================================
========================================================================================
Quote:
./procinfo -r tmpfile sh -c "cat tmpfile"

Quote:
echo "procinfo analyzes a given program and prints required information
usage: procinfo [options] program [args...]
options:
-e prints executed programs
-w regexp prints files opened for write access with a name matching regexp
-r regexp prints files opened for read access with a name matching regexp
-v regexp prints files opened for write access with a name not matching regexp
-b regexp prints files opened for read access with a name not matching regexp
-t file do not run strace/truss, use file as its output";
exit 1;}

Sorry, I cannot relate what you are typing to the syntax for the shell script called "procinfo" as described within the script which we find on on the Internet link you posted. There is no "-c" switch.

It is not at all clear what you want "procinfo" to do but I am concerned that you may be trying to analyse
Code:
sh -c "cat tmpfile"

which makes no real sense in shell and will definitely not work in the context of the script "procinfo" because it would start a subshell.

Maybe you mean this? Could be wrong because I am not going to analyse "procinfo". Totally untested but just to illustrate that I guess that you probably do not want to truss "sh" but that you probably do want to truss "cat"? Obviously the command executed in the end may not actually be "truss" because the script "procinfo" tries to work out what Operating System you have.

Code:
./procinfo -r tmpfile cat tmpfile

In conclusion this is not really a question about shell parameters it is about how to work some shell script called "procinfo" which you have found on the Internet.

Last edited by methyl; 03-26-2010 at 02:19 AM..
# 5  
Old 03-27-2010
Without optargs, "raw" method:
Code:
#!/bin/ksh or bash or dash or ...
#procinfo -r tmpfile -c "cat tmpfile"
ropt=""
copt=""
while [ $# -gt 0 ]
do
        opt="$1"
        case "$opt" in
             -r|--roption) ropt="$2" ; shift ;;
             -c|--coption) copt="$2" ; shift ;;
             --) shift; break ;; # no more options
             -*) echo "usage:$0 ....." >&2  ; exit 1 ;;
             *) break;; # not option, rest line is argument(s)
         esac
         shift
done

But if you like procinfo -r tmpfile sh -c "ls some" -c is not option, then syntax must be
procinfo -r tmpfile "ls -al"
or
procinfo -r tmpfile -- "ls -al"
or
procinfo -r tmpfile -- ls -al

for previous generic template.
-- is "standard" option which tell that no more option, the rest of line is arguments.
Code:
...
done
data="$@"
echo "$data"
# do it
$data

Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

File processing

Hi, I have a file 2013-01-01 2013-01-02 01-03-2013 03-03-2013 mar05 I need all the dates YYYY-MM-DD in a separate file and rest of the things in different file. File 1: 2013-01-01 2013-01-02 File 2: (8 Replies)
Discussion started by: ATWC
8 Replies

2. Programming

awk processing / Shell Script Processing to remove columns text file

Hello, I extracted a list of files in a directory with the command ls . However this is not my computer, so the ls functionality has been revamped so that it gives the filesizes in front like this : This is the output of ls command : I stored the output in a file filelist 1.1M... (5 Replies)
Discussion started by: ajayram
5 Replies

3. IP Networking

Processing time

I want to know the processing time taken by a node.example suppose a node ges a rreq...then it searched through it's table to see if it has a fresh route or not.I want to know this search time...is their any function available for doing this in ns2 or in glomosim.Any help is highly appreciated ... (1 Reply)
Discussion started by: prashantgolu
1 Replies

4. Shell Programming and Scripting

File processing

bash-2.05$ vi file_read.sh "file_read.sh" 9 lines, 97 characters #!/bin/ksh print "Enter the group name" read gname varA= grep "$gname::" group print $varA This is the scenario: I am trying to get a userid and groupname from user and trying to add the userid to the given group.... (11 Replies)
Discussion started by: mnathan
11 Replies

5. Shell Programming and Scripting

How to make parallel processing rather than serial processing ??

Hello everybody, I have a little problem with one of my program. I made a plugin for collectd (a stats collector for my servers) but I have a problem to make it run in parallel. My program gathers stats from logs, so it needs to run in background waiting for any new lines added in the log... (0 Replies)
Discussion started by: Samb95
0 Replies

6. Shell Programming and Scripting

help with processing a file

I have a file with header and data rows. I need to remove the header rows from the file and use the data rows for my processing. The problem is the header is not always constant number of rows. But the only way to identify the last row of the header is that it has the header information of... (4 Replies)
Discussion started by: dsravan
4 Replies

7. Shell Programming and Scripting

Optargs????

Hi I am sorry if my query is too simple ...... Can anybody explain the usage of optargs in shell script with options having arguments associated with them. Thanks in advance !!! (8 Replies)
Discussion started by: skyineyes
8 Replies
Login or Register to Ask a Question