D18
通过位置参数调用命令行参数,就要求调用脚本时输入的多个参数顺序必须是固定的。可能引起因输入顺序错误而产生异常的情况。因此为了避免这个情况,也使脚本更加严谨,当编写一个功能复杂的脚本时,我们通常让脚本具有可以指定选项的功能。
像Linux下的许多命令行工具一样,在调用脚本时,可以在命令后面指定不同的选项及命令行参数。
1. 使用case语句处理命令行选项
Shell脚本只接收一个命令行选项时,使用case语句进行处理。
$ cat processFile.sh #!/bin/bash #202005 opt=$1 filename=$2 checkfile() { if [ -z $filename ] then echo "File name missing" exit 1 elif [ ! -f $filename ] then echo "The file $filename does not exist" exit 2 fi } case $opt in -e|-E ) checkfile echo "Editing $filename file..." ;; -p|-P ) checkfile echo "Displaying $filename file..." ;; * ) echo "Bad argument!" echo "Usage: `basename $0` -e|-p filename" exit 3 ;; esac $ ./processFile.sh Bad argument! Usage: processFile.sh -e|-p filename $ ./processFile.sh -p File name missing $ ./processFile.sh -p list.txt Displaying list.txt file... $ ./processFile.sh -E list.txt Editing list.txt file...
2. 使用getopts处理多命令行选项