Bash脚本和getopts输出已保存的变量

时间:2014-03-04 22:37:32

标签: bash shell getopts

我正在尝试整理一个脚本来监控文件,并且我正在使用getopts。如果我运行不止一次,shell值不会改变......有大量的清理,但我已经被困在这一个问题上几个小时所以...

#!/bin/bash

function printUsage {
  echo "Usage: $0 [-e environment] [-r region] [-l logtype]"
  echo "Requirements:"
  echo "  -e environment to look in; prod or dev"
  echo "  -r 3 digit region designation"
  echo "  -l log type to find; soap, message, main, service, or detail"
  echo " example: $0 -e dev -r 111 -f soap"
  exit 0
}

if [ $# -lt 1 ]; then
  printUsage
fi

while getopts "e:r:l:" opt; do
   case $opt in
      e)
      environment="$OPTARG"
      ;;
      r)
      region="$OPTARG"
      ;;
      l)
      logtype="$OPTARG"          
      ;;
      \?)
      echo "Invalid option: -$OPTARG"
      printUsage;;
      :)
      echo "-$OPTARG requires an argument"
      printUsage;;
    esac
done

#build array of directories to search based on argument
function buildProductionArray {

# assume these are here

logpaths=(  )
}

#build array of directories to search based on argument
function buildDevArray {

# assume these are here

logpaths=(  )
}

function validateArguments {

#validate the environment
if [ "$(echo "$environment" | tr "[:lower:]" "[:upper:]")" == "PROD" ]; then
   buildProductionArray
elif [ "$(echo "$environment" | tr "[:lower:]" "[:upper:]")" == "DEV" ]; then
   buildDevArray
else
   echo "Usage: findlog [-e environment] [-r region] [-l logtype]"
   echo "Invalid environment" >&2; exit 1
fi

#validate the region
if ! [ "$region" -eq "$region" ] 2>/dev/null; then
echo "Usage: findlog [-e environment] [-r region] [-l logtype]"
  echo "Invalid region" >&2; exit 1
fi

#validate the logtype
function in_array() {
elements=${1}
    element=${2}
    for i in "${elements[@]}" ; do
        if [ "$i" == "$element" ] ; then
            return 1
        fi
    done
    return 0
}

logvalues=(soap message service main detail)

log="$(echo "$logtype" | tr '[:upper:]' '[:lower:]')"
echo "$log"
if in_array logvalues "${log}"; then 
  if [[ "$log" == "service" || "$log" == "detail" ]]; then
     log="-$log-time-"
  else
     log="-$log-"
     fi
  else
  echo "Usage: findlog [-e environment] [-r region] [-l logtype]"
   echo "Invalid environment" >&2; exit 1

fi
}

validateArguments


for i in "${logpaths[@]}"
do
   #assume this is here
done

0 个答案:

没有答案