Command line arguments in Bash
本问题已经有最佳答案,请猛点这里访问。
我想写一个采用不同参数的bash脚本。它应该像普通的Linux控制台程序那样使用:
1 | my_bash_script -p 2 -l 5 -t 20 |
因此,值2应该保存在一个称为pages的变量中,参数l应该保存在一个称为length的变量中,值20应该保存在一个可变的时间中。
最好的方法是什么?
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | pages= length= time= while getopts p:l:t: opt; do case $opt in p) pages=$OPTARG ;; l) length=$OPTARG ;; t) time=$OPTARG ;; esac done shift $((OPTIND - 1)) |
有点像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | pages= length= time= while test $# -gt 0 do case $1 in -p) pages=$2 shift ;; -l) length=$2 shift ;; -t) time=$2 shift ;; *) echo >&2"Invalid argument: $1" ;; esac shift done |