The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
getopts mit Nicht-Option Argumente? kdelok Shell Programmierung und Scripting 2 07-26-2008 10:44 PM
Option, gefolgt von der nächsten Option, wenn Argument fehlt mit getopts gurukottur Shell Programmierung und Scripting 2 03-17-2008 12:46 PM
Hilfe in getopts Chella Shell Programmierung und Scripting 4 11-02-2007 01:09 AM
Hilfe bei der getopts Probleme Shell Programmierung und Scripting 1 05-04-2006 11:07 PM
getopts yerra Shell Programmierung und Scripting 5 03-26-2005 10:43 AM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 08-19-2008
JoeJoseph JoeJoseph is offline
Registrierte Nutzer
  
 

Join Date: Aug 2008
Beiträge: 1
getopts: Schlechte Option (en)

Hi,

Ich habe ein Skript, das lief perfekt auf Solaris 5/8
Jedoch nach der Aktualisierung auf Solaris 5/10 es nicht gestartet.
Ich rufen Sie das Skript wie folgt:
./TestScript3.ksh - Dir $ APP_DATA_IN_OLD $ NDM_DATA / $ NEXT_FILE
Wenn ich es ausführen, bekomme ich die folgende Fehlermeldung "getopts: dir schlechte Option (s)".
Bitte lassen Sie mich wissen, was sich geändert hat zwischen 5,8 und Solaris Solaris 5.10 Ursache dieser und wie kann es repariert werden. Ich bin ein Newbie auf Skripts.
Der Körper der TestScript3.ksh angegeben wird:

Code:
#!/bin/ksh

USAGE="
Usage:  TestScript2 ( --about | --help | --usage | --version )
        TestScript2 [ --bzip ] [ -b|--bzip2] [ -c|--cycle cycles ] [ -d|--date ]
                   [ --dir dir ] [ -f|--force ] [ -g|--gzip ] [ -p|--pack ]
                   [ -s|--silent ] [ -t|--touch ] [ -z|--compress ]
                   file [file ...]
"
HELP="
Options:
        --about         Display information about the program.
        --help          Displays this message.
        --usage         Displays the program's usage.
        --version       Displays the program's version.
        --bzip
                Compress the cycled files with bzip.
        -b, --bzip2
                Compress the cycled files with bzip2.
        -c, --cycle cycles
                Keep 'cycles' number of cycled files. (Default is 3).
        -d, --date
                Append -YYYYMMDDHHMMSS to the cycled files where YYYY is the
                current year; MM is the current month; DD is the current day;
                HH is the current hour; MM is the current minute; and SS is the
                current second.
        --dir dir
                Specify the name of the directory for the cycled files to be
                shifted into.
        -f, --force
                Cycle a file even if it is zero bytes in length.
        -g, --gzip
                Compress the cycled files with gzip.
        -p, --pack
                Compress the cycled files with pack.
        -s, --silent
                Do not display warnings or informational messages.
                Errors will still be displayed.
        -t, --touch
                Create an empty file to replace the cycled file.
        -z, --compress
                Compress the cycled files with compress.
        file
                This is the name of the file to cycle.
"
# Define a restrictive PATH.
#
 export PATH=/usr/xpg4/bin:/usr/bin:/usr/ucb:/usr/local/bin
#export PATH=/bin
# Function to display information about this program.
#
about()
{
        echo
        echo "Copyright (c) 1998 Jim Barber. All rights reserved."
        [[ $change_id != $(eval echo "@(#) \\\$Id\: %\M%,v %\I% %\E% %\U% \\\$" | sed 's/\\//g') ]] && echo "$change_id"
        echo "$ABOUT"
        exit 2
}
# Function to display some help about the program.
#
help()
{
        echo "$USAGE$HELP"
        exit 2
}
# Function to display the usage of this program.
#
usage()
{
        exec >&2
        echo "$USAGE"
        exit 2
}
# Function to display the version of the program.
#
version()
{
        echo
        if [[ $change_id = $(eval echo "@(#) \\\$Id\: %\M%,v %\I% %\E% %\U% \\\$" | sed 's/\\//g') ]]
        then
                echo "cycle_file version 1.1"
        else
                echo $change_id | awk '{printf("cycle_file version %s\n", $4)}'
        fi
        echo
        exit 2
}
# Function to get the argument passed to a long option.
#
# This can't be used if it is valid for the parameter to the long option to
# have a leading '-' (except negative numbers, which are handled correctly).
#
# Example of usage:
#
#       VAR=$(get_long_optarg $OPTARG $OPTIND "$@") || exit ; shift
#
get_long_optarg()
{
        OPTARG=$1
        OPTIND=$2
        shift 2
        if [[ $(eval echo \$$OPTIND) = @(-*) && $(eval echo \$$OPTIND) != @(-)+([0-9])?(.)*([0-9]) || -z $(eval echo \$$OPTIND) ]]
        then
                echo "@basename@: --$OPTARG argument expected" >&2
                usage
        fi
        eval echo \$$OPTIND
}
# Function to convert Access Control Lists to a value suitable for passing to
# the chmod command.
#
acl_to_chmod()
{
        U=$(expr "$1" : '.\(...\)......')
        G=$(expr "$1" : '....\(...\)...')
        O=$(expr "$1" : '.......\(...\)')
        echo "u=$U,g=$G,o=$O" | sed 's/-//g; s/s/sx/g; s/S/s/g; s/t/tx/g; s/T/t/g'
}
# Initialise some parameters.
#
unset COMPRESS DATE DIR FORCE SILENT TOUCH
CYCLES=3
# Parse the command line parameters.
#
OPTIND=1
while getopts 'bc:dfgpstz-:' PARAMS
do
        case "$PARAMS" in
                b) COMPRESS='bzip2 -9' ;;
                c) CYCLES=$OPTARG ;;
                d) DATE=$(date "+%Y%m%d%H%M%S") ;;
                f) FORCE=true ;;
                g) COMPRESS='gzip -9' ;;
                p) COMPRESS=pack ;;
                s) SILENT=true ;;
                t) TOUCH=true ;;
                z) COMPRESS=compress ;;
                -)
                case "$OPTARG" in
                        about)          about ;;
                        help)           help ;;
                        usage)          usage ;;
                        version)        version ;;
                        bzip)           COMPRESS=bzip ;;
                        bzip2)          COMPRESS='bzip2 -9' ;;
                        compress)       COMPRESS=compress ;;
                        cycle)          CYCLES=$(get_long_optarg $OPTARG $OPTIND "$@") || exit ; shift ;;
                        date)           DATE=$(date "+%Y%m%d%H%M%S") ;;
                        dir)            DIR=$(get_long_optarg $OPTARG $OPTIND "$@") || exit ; shift ;;
                        force)          FORCE=true ;;
                        gzip)           COMPRESS='gzip -9' ;;
                        pack)           COMPRESS=pack ;;
                        silent)         SILENT=true ;;
                        touch)          TOUCH=true ;;
                        *)
                        echo "Illegal option --$OPTARG" >&2
                        usage ;;
                esac ;;
                \?)     usage ;;
        esac
done
shift $((OPTIND - 1))
echo $DIR
# Make sure that at least one file name was passed.
#
(( $# < 1 )) && usage
# Make sure that the directory for the log files to to be cycled to exists.
#
if [[ -n $DIR && ! -d $DIR ]]
then
        echo "Error: '$DIR' is not a valid directory."
        exit 1
fi
echo $@
for REAL_FILE in "$@"
do
        # Only do the cycle if the file exists.
        #
        if [[ ! -f $REAL_FILE ]]
        then
                [[ -z $SILENT ]] && echo "File '$REAL_FILE' does not exist. Skipping..." >&2
                RET_CODE=1
                continue
        else
        echo "File exists"
        fi
done
# Set a return code for the program.
#
RET_CODE=0
exit $RET_CODE
 

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 12:23 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0