shell脚本参数(getopts命令)
一. getopts
getopts 是 Unix/Linux 中用于解析命令行参数的常用工具,主要用于 Shell 脚本中处理短选项(如 -a、-b value 等)
1. 例子
#!/bin/bash
while getopts d:f: flag; do
case "$flag" in
d)
workDir=${OPTARG};;
f)
filename=${OPTARG};;
esac
done
echo $workDir
echo $filename
二.getopt
支持长选项
1.例子(短选项)
#!/bin/bash
ARGS=$(getopt -o "a:b:c" -- "$@")
if [ $? -ne 0 ]; then
echo "Usage: $0 -a <arg> -b <arg> -c"
exit 1
fi
eval set -- "$ARGS"
while true; do
case "$1" in
-a) echo "Option -a with argument: $2"; shift 2 ;;
-b) echo "Option -b with argument: $2"; shift 2 ;;
-c) echo "Option -c without argument"; shift ;;
--) shift; break ;;
*) echo "Error: unknown option $1"; exit 1 ;;
esac
done
# 处理剩余的参数
echo "Remaining arguments: $@"
使用: ./script.sh -a foo -b bar -c extra
2.例子(长选项)
#!/bin/bash
ARGS=$(getopt -o "a:b:hc" -l "alpha:,bravo:,help,charlie" -- "$@")
eval set -- "$ARGS"
while true; do
case "$1" in
-a|--alpha) echo "Alpha: $2"; shift 2 ;;
-b|--bravo) echo "Bravo: $2"; shift 2 ;;
-c|--charlie) echo "Charlie"; shift ;;
-h|--help)
echo "Usage: $0 [OPTIONS]"
echo " -a, --alpha VALUE Set alpha value"
echo " -b, --bravo VALUE Set bravo value"
echo " -c, --charlie Enable charlie mode"
echo " -h, --help Show this help"
exit 0
;;
--) shift; break ;;
*) echo "Invalid option: $1"; exit 1 ;;
esac
done
echo "Remaining arguments: $@"
使用: ./script.sh --alpha 100 --bravo 200 --charlie --help

浙公网安备 33010602011771号