使用多个设置选项配置脚本

使用多个设置选项配置脚本

我正在编写自己的脚本来安装 Arch Linux。每次重新安装系统或在其他设备中使用我的脚本时,我希望有几个选项可以更改/配置。
我想配置脚本,以便:如果我选择BTRFS,则将执行格式化、子卷创建以及安装的相关命令。
同样,如果我选择 Gnome 作为桌面环境,脚本应该安装 Gnome 和相关的显示管理器。

我可以通过在脚本顶部编写变量来部分实现此目的。然后,在运行脚本之前,我将根据需要注释或取消注释。但是,如果我希望脚本有更多选项,则需要定义的变量太多。

目前该脚本如下所示:

DISK="nvme0n1"
#DISK="sda"
UEFIPARTITION="nvme0n1p1"
#UEFIPARTITION="sda1"
SYSTEMPARTITION="nvme0n1p2"
#SYSTEMPARTITION="sda2"

然后脚本中的某个地方将会有:

gdisk /dev/$DISK
.
.
.
mkfs.vfat -n BOOT /dev/$UEFIPARTITION
mkfs.btrfs -L SYSTEM /dev/$SYSTEMPARTITION

DISK仅将一个变量设置为sdX或会更容易nvme0n1。然后,我可以为每个命令执行相关的命令。
我是编写脚本的初学者。
实现我所解释的内容的最简单方法是什么?如果有人可以解释实现上述目标的另一种/更好的方法,我很高兴。

答案1

有多种方法可以在脚本中执行选项

  1. 遍历参数数组
# define a named array for convenience from script arguments array
ARG=( "${@}" )

for i in ${ARG[@]}; do
    echo $i
done
  1. 使用getopt命令( man 1 getopt)
A=0
while getopts "ab:h" option; do
   case $option in
      a) # a key -a was given
         A=1
         ;;
      b) # The colon in definition means it requires argument
         BARG = $optarg
         ;;
      h) # display Help
         echo Help text
         exit;;
      *) # any other argumnet
         echo Unknown option $option
         exit;;
   esac
done

相关内容