📜  linux 一一循环所有参数 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:17:21.332000             🧑  作者: Mango

Linux Shell中一一循环所有参数

在Linux Shell中,当需要执行一个命令或者脚本时,可能会需要传递一些参数给它,比如:

$ mycommand -a foo -b bar file1 file2 file3

在这个例子中,-a-b是命令的选项,foobar是选项的参数,file1file2file3是命令的参数。如果想要循环所有的参数,可以使用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 = $*"
Markdown代码片段
```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 = $*"
```