linux shell 命令行参数
西京刀客 人气:5linux shell 解析命令行参数|getpots
demo:
#!/bin/bash func() { echo "Usage:" echo "test.sh [-j S_DIR] [-m D_DIR]" echo "Description:" echo "S_DIR,the path of source." echo "D_DIR,the path of destination." exit -1 } upload="false" while getopts 'h:j:m:u' OPT; do case $OPT in j) S_DIR="$OPTARG";; m) D_DIR="$OPTARG";; u) upload="true";; h) func;; ?) func;; esac done echo $S_DIR echo $D_DIR echo $upload
输出
sh test.sh -j /data/web -m /opt/data/web
##输出结果
/data/web
/opt/data/web
false
- optstring列出了对应的Shell脚本可以识别的所有参数,例如:需要使用-a,-f,-s参数时,optstring是afs;如果需要命令行参数后面还跟随一个值,则在相应的optstring后面加冒号,例如a:fs 表示a命令行参数后面会有一个值,是**-a value**的形式;
- getopts执行时若匹配到a参数,会把-a参数对应的value存放在一个叫OPTARG的Shell Variable中;
- 如果optstring是以冒号开头,则表明当命令行出现了optstring中没有的参数将不会提示错误信息
getpots
getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数。
getopts optstring name [arg...]
optstring列出了对应的Shell Script可以识别的所有参数。比如:如果 Shell Script可以识别-a,-f以及-s参数,则optstring就是afs;如果对应的参数后面还跟随一个值,则在相应的optstring后面加冒号。比如,a:fs 表示a参数后面会有一个值出现,-a value的形式。
name表示的是参数的名称,每次执行getopts,会从命令行当中获取下一个参数,然后存放到name当中。如果获取到的参数不在optstring当中列出,则name的值被设置为?。
加载全部内容