📅  最后修改于: 2023-12-03 15:17:21.332000             🧑  作者: Mango
在Linux Shell中,当需要执行一个命令或者脚本时,可能会需要传递一些参数给它,比如:
$ mycommand -a foo -b bar file1 file2 file3
在这个例子中,-a
、-b
是命令的选项,foo
、bar
是选项的参数,file1
、file2
、file3
是命令的参数。如果想要循环所有的参数,可以使用Shell的循环结构。
#!/bin/bash
# 循环所有的选项和参数
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-a|--option-a)
OPTION_A="$2"
shift # 将$2的值移到$1的位置上
shift # 这样$2变成了下一个参数,也就是$3,$1变成了option-b
;;
-b|--option-b)
OPTION_B="$2"
shift # 将$2的值移到$1的位置上
shift # 这样$2变成了下一个参数,也就是$3,$1变成了file1
;;
*) # 其他参数
shift # 必须调整$1的值
;;
esac
done
# 输出所有选项和参数
echo "OPTION_A = $OPTION_A"
echo "OPTION_B = $OPTION_B"
echo "FILES = $*"
```bash
#!/bin/bash
# 循环所有的选项和参数
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-a|--option-a)
OPTION_A="$2"
shift # 将$2的值移到$1的位置上
shift # 这样$2变成了下一个参数,也就是$3,$1变成了option-b
;;
-b|--option-b)
OPTION_B="$2"
shift # 将$2的值移到$1的位置上
shift # 这样$2变成了下一个参数,也就是$3,$1变成了file1
;;
*) # 其他参数
shift # 必须调整$1的值
;;
esac
done
# 输出所有选项和参数
echo "OPTION_A = $OPTION_A"
echo "OPTION_B = $OPTION_B"
echo "FILES = $*"
```