我正在编写自己的脚本来安装 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
有多种方法可以在脚本中执行选项
- 遍历参数数组
# define a named array for convenience from script arguments array
ARG=( "${@}" )
for i in ${ARG[@]}; do
echo $i
done
- 使用
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