The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
getopts avec option de non-arguments? kdelok De programmation et de script Shell 2 07-26-2008 10:44 PM
suivie par l'option: prendre l'option suivante si argument manquant à getopts gurukottur De programmation et de script Shell 2 03-17-2008 12:46 PM
Aide en getopts Chella De programmation et de script Shell 4 11-02-2007 01:09 AM
aider à getopts problèmes De programmation et de script Shell 1 05-04-2006 11:07 PM
getopts yerra De programmation et de script Shell 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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 08-19-2008
JoeJoseph JoeJoseph is offline
Registered User
  
 

Date d'inscription: août 2008
Messages: 1
getopts: mauvaise option (s)

Salut,

J'ai un script qui a parfaitement sur Solaris 5.8
Toutefois, après la mise à niveau vers Solaris 5.10, il a commencé à défaut.
J'invoque le script ci-dessous:
./TestScript3.ksh - Dir APP_DATA_IN_OLD $ $ NDM_DATA / $ NEXT_FILE
Quand je l'exécuter je reçois le message d'erreur suivant "getopts: dir mauvaise option (s)".
S'il vous plaît laissez-moi savoir ce qui a changé entre Solaris 5.8 et Solaris 5.10 à l'origine de ce et comment elle peut être fixée. Je suis un Newbie sur Scripts.
Le corps de TestScript3.ksh est donnée ci-dessous:

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
 

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 08:28 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0