Sponsored Content
Top Forums Shell Programming and Scripting Improving this validate function Post 302467205 by DGPickett on Thursday 28th of October 2010 02:46:36 PM
Old 10-28-2010
Well, now you need to validate the number of arguments, and validate each one separately.

Code:
validateInputs(){

 inputs=$1
 allowedInput=$2
 min_args=$3
 max_args=$4
 arg_ct=0
 inval_args=""

 for input in $inputs qzzq
 do
  if [ $input = qzzq ]
  then
   break
  fi

  for allowedOption in ${allowedInput}
  do
   if [ ${input} -eq ${allowedOption} ]
   then
    inval_args="$inval_args $input"
   fi
  done
  (( $arg_ct += 1 ))
 done

 if [ "$inval_args" != "" ]
 then
  echo "Invalid:$inval_args" >/dev/tty
  return 1
 fi

 if (( $arg_ct > $max_args || $arg_ct < $min_args ))
 then
  return 2
 fi

 return 0
}

 

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

improving my script

Hi; I want to access our customer database to retreive all clients that have as language index 2 or 3 and take their client number. My input is a file containing all client numbers. i access the data base using a function call "scpshow". The total number of clients i want to scan is 400 000... (6 Replies)
Discussion started by: bcheaib
6 Replies

2. UNIX for Dummies Questions & Answers

Improving Unix Skills

Kindly any advice to improve my unix skills as electronic books i can download or valuable sites as this one etc... (3 Replies)
Discussion started by: sak900354
3 Replies

3. Shell Programming and Scripting

Improving code by using associative arrays

I have the following code, and I am changing it to #!/bin/bash hasArgumentCModInfile=0 hasArgumentSrcsInfile=0 hasArgumentRcvsInfile=0 OLDIFS="$IFS" IFS="|=" # IFS controls splitting. Split on "|" and "=", not whitespace. set -- $* # Set the positional... (3 Replies)
Discussion started by: kristinu
3 Replies

4. Shell Programming and Scripting

Basic help improving for in loop

I'm obviously very new to this. I'm trying to write a simple for loop that will read the directory names in /Users and then copy a file into the same subdir in each user directory. I have this, and it works but it isn't great. #!/bin/bash HOMEDIRS=/Users/* for dirs in $HOMEDIRS; do if ];... (5 Replies)
Discussion started by: Heath_T
5 Replies

5. Shell Programming and Scripting

Need help improving my script.

Thank you for taking the time to look at this and provide input. To start, I am not a linux/unix expert but I muddle through the best I can. I am also in no way shape or form a programmer. Please keep that in mind as you read this script. This script is designed to find all files in a given... (8 Replies)
Discussion started by: garlandxj11
8 Replies

6. Shell Programming and Scripting

Improving code

Gents, I did the below code to get an output (report) ,.. the code works fine but I believe it can be more shorted using better method. Please if you can help, to generate same output improving the code , will be great. here my code. # get diff in time awk '{$9=$8-prev8;prev8=$8;print... (8 Replies)
Discussion started by: jiam912
8 Replies

7. Shell Programming and Scripting

Improving repetitive tasks in function

stop_service () { sudo systemctl is-active --quiet video.service && sudo systemctl stop video.service && sudo rm /etc/systemd/system/video.service && echo stop video sudo systemctl is-active --quiet audio.service && sudo systemctl stop audio.service && sudo rm /etc/systemd/system/audio.service... (4 Replies)
Discussion started by: aristosv
4 Replies
shevek::args(3) 					     Library Functions Manual						   shevek::args(3)

NAME
shevek::args - Commandline and configuration file parsing helper. SYNOPSIS
#include <args.hh> Classes class option Define an option which can be given to the program. Public Member Functions args (int &argc, char **&argv, int min_args, int max_args, Glib::ustring const &description, Glib::ustring const &copyright_years=COPYRIGHT_YEARS, Glib::ustring const &copyright_email=(COPYRIGHT_EMAIL[0]== ' '?PACKAGE_BUGREPORT:COPYRIGHT_EMAIL), Glib::ustring const &programmer=COPYRIGHT_AUTHOR, Glib::ustring const &email=PACKAGE_BUGREPORT, char const *programname=PACKAGE_NAME, char const *packagename=PACKAGE_TARNAME, char const *version=PACKAGE_VERSION) template<unsigned size_> args (int &argc, char **&argv, option(&o)[size_], int min_args, int max_args, Glib::ustring const &description) Parse the commandline providing a list of possible options. unsigned size () const The number of non-option arguments. std::string const & operator[] (unsigned idx) const Get the non-option arguments. std::vector< std::string > ::const_iterator begin () const " Iterate over the non-option arguments. std::vector< std::string > ::const_iterator end () const " Iterate over the non-option arguments. Detailed Description Commandline and configuration file parsing helper. Args is a commandline parsing helper. It allows giving the possible short and long options in a simple list and provides --help and --version output to the user of the program. Usage: create an array of shevek::args::option, containing the desired options. create an instance of args and pass it argc and argv on the constructor. It will call all the callbacks of the options from the constructor. size () and operator[] can be used to access the non- option arguments. Constructor &; Destructor Documentation shevek::args::args (int &argc, char **&argv, intmin_args, intmax_args, Glib::ustring const &description, Glib::ustring const &copyright_years = COPYRIGHT_YEARS, Glib::ustring const &copyright_email = (COPYRIGHT_EMAIL[0]== ' '?PACKAGE_BUGREPORT:COPYRIGHT_EMAIL), Glib::ustring const &programmer = COPYRIGHT_AUTHOR, Glib::ustring const &email = PACKAGE_BUGREPORT, char const *programname = PACKAGE_NAME, char const *packagename = PACKAGE_TARNAME, char const *version = PACKAGE_VERSION) Parse the commandline. Only the default arguments (--help, -h and --version) are understood. Author Generated automatically by Doxygen for libshevek from the source code. libshevek Fri May 11 2012 shevek::args(3)
All times are GMT -4. The time now is 11:12 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy