저는 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