#!/usr/bin/ksh if [[ $# -lt 2 ]] then echo "Usage: ${0##*/} <file name #1> <file name #2> exit 0 fi if [[ ! -f "${1}" ]] then echo "Unable to find file '${1}'" exit 1 fi if [[ ! -r "${1}" ]] then echo "Unable to read file '${1}'" exit 2 fi gzip ${1} ls -l ${1}.gz if [[ ! -f "${2}" ]] then echo "Unable to find file '${2}'" exit 1 fi if [[ ! -r "${2}" ]] then echo "Unable to read file '${2}'" exit 2 fi gzip ${2} ls -l ${2}.gz |
#!/usr/bin/ksh exit_msg() { [[ $# -gt 1 ]] && echo "${0##*/} (${1}) - ${2}" exit ${1:-0} } [[ $# -lt 2 ]] && exit_msg 0 "Usage: ${0##*/} <file name #1> <file name #2> for _FNAME in $@ do [[ ! -f "${_FNAME}" ]] && exit_msg 1 "Unable to find file '${_FNAME}'" [[ ! -r "${_FNAME}" ]] && exit_msg 2 "Unable to read file '${_FNAME}'" gzip ${_FNAME} ls -l ${_FNAME}.gz done |
#!/bin/bash if [[ -f /home/cormany/FileA ]] then echo "Found file '/home/cormany/FileA'" elif [[ -f /home/cormany/DirA/FileA ]] then echo "Found file '/home/cormany/DirA/FileA'" else echo "Unable to find file FileA" fi |
#!/bin/bash exit_msg() { [[ $# -gt 1 ]] && echo "${0##*/} (${1}) - ${2}" exit ${1:-0} } [[ $# -lt 2 ]] && exit_msg 1 "Usage: ${0##*/} <file name> <location>" _FNAME="${1}" _DNAME="${2}" [[ ! -d "${_DNAME}" ]] && exit_msg 2 "Unable to read or find directory '${_DNAME}'" if [[ -f "${_DNAME}/${_FNAME}" ]] then exit_msg 0 "Found file '${_DNAME}/${_FNAME}'" else exit_msg 3 "Unable to find file '${_DNAME}/${_FNAME}'" fi |
#!/usr/bin/ksh _ARGS=`getopt -o x --long xxxxx -n ${0##*/} -- "$@"` while [[ $# -gt 0 ]] do case "${1}" in -x|--xxxxx) echo "Arg x hit!"; shift;; --) shift; break;; *) echo "Invalid Option: ${1}"; break;; esac done |
# ./hm -x Arg x hit! |
# ./hm -a Invalid Option: -a |
confirm_and_exit() { [[ ${_DEBUG_LEVEL} -ge 3 ]] && set -x while [[ -z ${_EXIT_ANS} ]] do cup_echo "Are you sure you want to exit? [Y/N] \c" ${_PROMPT_ERR_ROW} ${_PROMPT_ERR_COL} ${_TPUT_CMD} cnorm read ${_NO_EOL_FLAG:+${_READ_FLAG:-'-n'}} ${_NO_EOL_FLAG} _EXIT_ANS ${_TPUT_CMD} civis done case ${_EXIT_ANS} in [Nn]) unset _EXIT_ANS; return 0;; [Yy]) exit_msg 0 1 "Exiting Script";; *) invalid_selection ${_EXIT_ANS}; unset _EXIT_ANS;; esac return 0 } |
######################################### # function confirm_and_exit ######################################### confirm_and_exit() { # if the debug level is set to 3 or higher, send every evaluated line to stdout [[ ${_DEBUG_LEVEL} -ge 3 ]] && set �Cx # Continue to prompt the user until they provide a valid answer while [[ -z ${_EXIT_ANS} ]] do # prompt user if they want to exit the script # cup_echo function calls tput cup <x> <y> # syntax: # cup_echo <string to display> <row on stdout to display> <column on stdout to display> cup_echo "Are you sure you want to exit? [Y/N] \c" ${_PROMPT_ERR_ROW} ${_PROMPT_ERR_COL} # change cursor to normal via tput ${_TPUT_CMD} cnorm # read value entered by user # if _NO_EOL_FLAG is supplied, use value of _READ_FLAG or “-n” # if _NO_EOL_FLAG is supplied, use value as characters aloud on read # assign value entered by user to variable _EXIT_ANS read ${_NO_EOL_FLAG:+${_READ_FLAG:-'-n'}} ${_NO_EOL_FLAG} _EXIT_ANS # change cursor to invisible via tput ${_TPUT_CMD} civis done # if user entered “n”, return to previous block of code with return code 0 # if user entered “y”, exit the script # if user entered anything else, execute function invalid_selection case ${_EXIT_ANS} in [Nn]) unset _EXIT_ANS; return 0;; [Yy]) exit_msg 0 1 "Exiting Script";; *) invalid_selection ${_EXIT_ANS}; unset _EXIT_ANS;; esac # exit function with return code 0 return 0 } |
#!/usr/bin/bash trap 'exit_msg 1 0 "Signal Caught. Exiting..."' HUP INT QUIT KILL ABRT trap 'window_size_changed' WINCH _MSG_SLEEP_TIME=3 _RETNUM_SIZE=6 _DEBUG_LEVEL=0 _TMPDIR="/tmp" _SP_LOG="${0##*/}.log" _SP_REQUESTS="${HOME}/sp_requests" _MENU_ITEMS=15 LESS="-P LINE\: %l" export _SP_REQUESTS _TMPDIR _SP_LOG _DB_BACKUP_DIR export _DEBUG_LEVEL _NEW_RMSYNC _RMTOTS_OFFSET_COL |
#!/usr/bin/bash ######################################################################### # traps ######################################################################### # trap when a user is attempting to leave the script trap 'exit_msg 1 0 "Signal Caught. Exiting..."' HUP INT QUIT KILL ABRT trap 'window_size_changed' WINCH # trap when a user has resized the window ######################################################################### ######################################################################### # defined/exported variables ######################################################################### _MSG_SLEEP_TIME=3 # seconds to sleep for all messages # (if not defined, default will is 1 second) _CUSTNUM_SIZE=6 # length of a customer number in this location # (if not defined, default is 6) _DEBUG_LEVEL=0 # log debug messages. log level is accumulative # (i.e. 1 = 1, 2 = 1 & 2, 3 = 1, 2, & 3) # (if not defined, default is 0) # Log levels: # 0 = No messages # 1 = brief messages (start script, errors, etc) # 2 = environment setup (set / env) # 3 = set -x (A LOT of spam) _TMPDIR="/tmp" # directory to put work/tmp files # (if not defined, default is /tmp) _SP_LOG="${0##*/}.log" # log of script events _SP_REQUESTS="${HOME}/sp_requests" # file to customer record requests, # also read at startup _MENU_ITEMS=15 # default number of items to display per page # (it not defined, default is 10) LESS="-P LINE\: %l" # format 'less' prompt. MAN less if more info # export the variables defined above export _MSG_SLEEP_TIME _CUSTNUM_SIZE _DEBUG_LEVEL _TMPDIR _SP_LOG _SP_REQUESTS _MENU_ITEMS ######################################################################### |
#!/bin/bash _X=1 while [[ ${_X} -le 10 ]] do [[ ${_X} -lt 5 ]] && echo "X is less than 5! _Y=`expr ${_X) + 1` if [[ ${_Y} -eq 6 ]] echo "Y is now equal to ${_Y}" fi _X=${_Y} done |
# ./make_errors ./make_errors: line 11: unexpected EOF while looking for matching `"' ./make_errors: line 16: syntax error: unexpected end of file |
./make_errors: line 12: syntax error near unexpected token `fi' ./make_errors: line 12: ` fi' |
#!/bin/bash _X=1 while [[ ${_X} -le 10 ]] do [[ ${_X} -lt 5 ]] && echo "X is less than 5!" _Y=`expr ${_X} + 1` if [[ ${_Y} -eq 6 ]] then echo "Y is now equal to ${_Y}" fi _X=${_Y} done |
# ./make_errors X is less than 5! X is less than 5! X is less than 5! X is less than 5! Y is now equal to 6 |
#!/bin/bash set -x # loop through and display some test statements _X=1 while [[ ${_X} -le 4 ]] do [[ ${_X} -lt 2 ]] && echo "X is less than 2! _Y=`expr ${_X} + 1` if [[ ${_Y} -eq 3 ]] then echo "Y is now equal to ${_Y}" fi _X=${_Y} done |
# export PS4="DEBUG => " |
# ./make_errors
DEBUG => _X=1
DEBUG => [[ 1 -le 4 ]]
DEBUG => [[ 1 -lt 2 ]]
DEBUG => echo 'X is less than 2!'
X is less than 2!
DDEBUG => expr 1 + 1
DEBUG => _Y=2
DEBUG => [[ 2 -eq 3 ]]
DEBUG => _X=2
DEBUG => [[ 2 -le 4 ]]
DEBUG => [[ 2 -lt 2 ]]
DDEBUG => expr 2 + 1
DEBUG => _Y=3
DEBUG => [[ 3 -eq 3 ]]
DEBUG => echo 'Y is now equal to 3'
Y is now equal to 3
DEBUG => _X=3
DEBUG => [[ 3 -le 4 ]]
DEBUG => [[ 3 -lt 2 ]]
DDEBUG => expr 3 + 1
DEBUG => _Y=4
DEBUG => [[ 4 -eq 3 ]]
DEBUG => _X=4
DEBUG => [[ 4 -le 4 ]]
DEBUG => [[ 4 -lt 2 ]]
DDEBUG => expr 4 + 1
DEBUG => _Y=5
DEBUG => [[ 5 -eq 3 ]]
DEBUG => _X=5
DEBUG => [[ 5 -le 4 ]]
|