Lables in UNIX


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Lables in UNIX
# 1  
Old 12-10-2003
Lables in UNIX

Hi all,

I am relatively new to UNIX coding so please pardon the potentially silly question. I am running on AIX v4.

I have a large batch script that I have scheduled to run monthly. When the script falls over, I have to manually comment out all of the preceding steps before I can rerun the job.

Is there a way in UNIX to use Lable type coding structures so that I can rather pass a parameter to my code and based on the value passed, go to a particular lable and process from there.

This will prevent me from having to continually comment out large sections of code etc.

Any help will be appreciated.

Thanks
# 2  
Old 12-10-2003
If your script is function based it would make things easier as opposed to having all functionality in-line. You could employ getopts to process command line parameters. In the event that the script is executed without any parms, it could simply execute in its standard form. However, if you passed in say, the flag -r (restart), it could only execute specific functionality. getopts is like the argc and argv[] in C see man getopts

Last edited by google; 12-10-2003 at 08:19 AM..
# 3  
Old 12-10-2003
Hammer & Screwdriver

Hi,

Thanks for the reply. Unfortunately, I have inherited a massive shell script thats at least 20 pages long. None of it is function driven, i.e. its just line after line of consecutive script.

I am not quite sure what you mean by employ getopts to process command line parameters. My UNIX knowledge is REALLY small.

Thanks
# 4  
Old 12-10-2003
Why continually comment something out? Save your work under a new name. That way it will be around the next time you need it. Certainly you have enough expertise for that.

The next step might be to examine the script and break it into a few smaller, umm, sub-scripts. Then rewrite the master script to call each sub-script in turn.

The final step would be to turn each subscript into a function and rewrite the master to call each function needed based on input parameters. But that can wait until you're read a book on shell programming.
# 5  
Old 12-10-2003
Getopts is used to process command line arguments passed to a script. It is capable of taking options such as -rFOO and reading the argument as -r and then processing the argument imediately following FOO. For example:
Code:
 if [ $# -eq 0 ]
    then
       call-some-function-here
       exit
     else
       while getopts b:c:d:f: opt
        do
          case $opt in
            b)
              do-some-b-arg-stuff
              ;;
            c)
              do-some-c-arg-stuff
              ;;
            d)
              do-some-d-arg-stuff           
              ;;
            f)
              do-some-f-arg-stuff
              ;;
          esac
  fi
done

From the manual page.
NAME
getopts - parse utility (command) options

SYNOPSIS
getopts optstring name [arg ...]

DESCRIPTION
getopts is used to retrieve options and option-arguments from a list
of parameters.

Each time it is invoked, getopts places the value of the next option
in the shell variable specified by the name operand and the index of
the next argument to be processed in the shell variable OPTIND.
Whenever the shell is invoked, OPTIND is initialized to 1.

When the option requires an option-argument, getopts places it in the
shell variable OPTARG. If no option was found, or if the option that
was found does not have an option-argument, OPTARG is unset.

If an option character not contained in the optstring operand is found
where an option character is expected, the shell variable specified by
name is set to the question-mark (?) character. In this case, if the
first character in optstring is a colon (:), the shell variable OPTARG
is set to the option character found, but no output is written to
standard error; otherwise, the shell variable OPTARG is unset and a
diagnostic message is written to standard error. This condition is
considered to be an error detected in the way arguments were presented
to the invoking application, but is not an error in getopts
processing.

If an option-argument is missing:

+ If the first character of optstring is a colon, the shell
variable specified by name is set to the colon character and
the shell variable OPTARG is set to the option character
found.

+ Otherwise, the shell variable specified by name is set to the
question-mark character, the shell variable OPTARG is unset,
and a diagnostic message is written to the standard error.
This condition is considered to be an error detected in the
way arguments are presented to the invoking application, but
is not an error in getopts processing; a diagnostic message is
written as stated, but the exit status is zero.

When the end of options is encountered, getopts exits with a return
value greater than zero. The shell variable OPTIND is set to the
index of the first nonoption-argument, where the first -- argument is
considered to be an option argument if there are no other non-option
arguments appearing before it, or the value $# + 1 if there are no
nonoption-arguments; the name variable is set to the question-mark

Last edited by google; 12-10-2003 at 11:15 AM..
# 6  
Old 12-10-2003
You could use a restart file which would hold the step number if the script failed...
Code:
#!/usr/bin/ksh
if [ -f restart ]
then
    STEP=`cat restart`
    echo Restarting from step $STEP
else
    STEP=1
fi
until [ $STEP -gt 3 ]
do
  case $STEP in
    1)
echo command a
echo command b
    ;;
    2)
echo command c
echo command d
    ;;
    3)
echo command e
echo command f
    ;;
  esac
  let STEP=STEP+1
  echo $STEP > restart
done
rm restart

You can group the legacy script commands into logical steps or around common points of failure.
# 7  
Old 12-12-2003
bump

No response. I guess that no suggestions helped. Here's a method of commenting groups of lines which could be thought of as a kind of "goto"...
Code:
:<<!!
echo command a disabled
echo command b disabled
!!
echo command c okay

 
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Post Here to Contact Site Administrators and Moderators

VIP Membership - The UNIX and Linux Forums - Get Your UNIX.COM Email Address Here

We work hard to make The UNIX and Linux Forums one of the best UNIX and Linux knowledge sources on the net. The site is certainly one of the top UNIX and Linux Q&A sites on the web. In order to provide certain members the best quality account services, you can now get some great extra features by... (2 Replies)
Discussion started by: Neo
2 Replies

2. Shell Programming and Scripting

File Transfer from Window server to UNIX and UNIX to UNIX

Dear All, Can someone help to command or program to transfer the file from windows to Unix server and from one unix server to another Unix server in secure way. I would request no samba client. (4 Replies)
Discussion started by: yadavricky
4 Replies

3. UNIX for Dummies Questions & Answers

How does unix system administration, unix programming, unix network programming differ?

How does unix system administration, unix programming, unix network programming differ? Please help. (0 Replies)
Discussion started by: thulasidharan2k
0 Replies

4. Shell Programming and Scripting

Batch job in unix server to move the pdf file from unix to windows.

Hi Experts, I have a requirement where i need to setup a batch job which runs everymonth and move the pdf files from unix server to windows servers. Could some body provide the inputs for this. and also please provide the inputs on how to map the network dirve in the unix like that... (1 Reply)
Discussion started by: ger199901
1 Replies

5. Shell Programming and Scripting

FTP script for sending a file from one unix directory to another unix server director

Hi, My local server is :/usr/abcd/ Remote server is :/Usr/host/test/ I want to send files from local unix directory(All files starting with O_999) to remote host unix directory. Can any body give me the Unix Shell script to do this. One more doubt: Shall we need to change the file... (1 Reply)
Discussion started by: raja_1234
1 Replies

6. UNIX for Advanced & Expert Users

missing Path(in UNIX) when i launch a job on to unix machine using windows SSh

hi i want run an unix application from a windows program/application.i am using SSH(command line version)to log on to a unix machine from windows. the application has to read a configuration file inorder to run. the configuration file .CFG is in bin in my home directory. but the application... (1 Reply)
Discussion started by: megastar
1 Replies

7. UNIX for Dummies Questions & Answers

Unix History Question: Why are filenames/dirnames case sentsitive in Unix?

I tried looking for the answer online and came up with only a few semi-answers as to why file and directory names are case sensitive in Unix. Right off the bat, I'll say this doesn't bother me. But I run into tons of Windows and OpenVMS admins in my day job who go batty when they have to deal... (3 Replies)
Discussion started by: deckard
3 Replies

8. UNIX for Dummies Questions & Answers

UNIX problem? Unix programm runs windows 2000 CPU over 100%

Okee problems...!! What is happening: Unix server with some programms, workstations are windows 2000, the workstations work good but when you start a programm on the Unix server the CPU of the workstations go to 100% usage resulting that the system gets very slow. The programm well its running so... (2 Replies)
Discussion started by: zerocool
2 Replies
Login or Register to Ask a Question