Making your scripts user and sysadmin friendly
When designing a shell script it is important to make them easy to use but also to make it easily automated for deployment. One example of this that comes to mind is the NVIDIA installer. It has command line options to allow for deployment but also gives a nice interface for the end user.
To implement this “dialog” can be used for the user interface and “getopts” can be used for the command line options. The script may look something like:
#help function help () { echo "Linux Blog - getopts and dialog example"; echo "Usage:"; echo -e "\t -h shows this help"; echo -e "\t -a [y/n][other] ANSWER (Yes, No or Other)"; } #show dialog to get the answers showDialog () { dialog --yesno "Do you want to enter y?" 5 50 && \ ANS="Yes was entered using dialog" ||\ ANS="No was entered using dialog" showAnswer; } #actually show the answer showAnswer() { echo $ANS; } #check answer for command line processing checkAns() { if [ "${OPT1}" == "y" ] then ANS="Yes sent by getopts"; elif [ "${OPT1}" == "n" ] then ANS="No was sent getopts"; else ANS="This: $OPT1 was sent by getopts"; fi #call showAnswer showAnswer; } #get the options while getopts "a:h" ARG; do case "${ARG}" in a) OPT1="${OPTARG}";; h) HELP="TRUE";; esac; done #see if help was entered if [ "${HELP}" ] then #display help and quit help; exit; fi #if the options are empty if [ -z "${OPT1}" ] then showDialog; else checkAns; fi |
Keep this getopts and dialog post in mind next time your shell scripting. It will take a little extra time to implement but the result will be a user and sysadmin friendly script.