da1
1
Hi guys,
I have a shell script where I have the following:
for i in ad0 ad1
do
gpart create -s gpt $i || echo "Cannot create GPT partition on "$i". Exiting ..."
gpart add -s 128 -t freebsd-boot $i || echo "Cannot add freebsd-boot partition on "$i". Exiting ..."
gpart add -s 4G -t freebsd-swap -l swap $i || echo "Cannot add freebsd-swap partition to "$i". Exiting ..."
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 $i || echo "Cannot add bootcode to "$i". Exiting ..."
done
The problem is that, upon an error, the "if not" doesn't exit. Does it have something to do with the "for" loop ?
You didn't ask it to exit so it is not exiting...
cmd || (echo "Not good" && exit 1)
HTH
--ahamed
This should do what you want:
for i in ad0 ad1; do
gpart create -s gpt "$i" || {
printf >&2 'Cannot create GPT partition on "%s". Exiting ...\n' "$i"
exit 1
}
gpart add -s 128 -t freebsd-boot "$i" || {
printf >&2 'Cannot add freebsd-boot partition on "%s". Exiting ...\n' "$i"
exit 1
}
gpart add -s 4G -t freebsd-swap -l swap "$i" || {
printf >&2 'Cannot add freebsd-swap partition to "%s". Exiting ...\n'
exit 1
}
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 "$i" || {
printf >&2 'Cannot add bootcode to "%s". Exiting ...\n' "$i"
exit 1
}
done
Something like this would be even better:
die() {
[ -n "$1" ] &&
printf >&2 '%s\n' "$1"
exit 1
}
for i in ad0 ad1; do
gpart create -s gpt "$i" ||
die "Cannot create GPT partition on $i. Exiting ..."
gpart add -s 128 -t freebsd-boot "$i" ||
die "Cannot add freebsd-boot partition on $i. Exiting ..."
gpart add -s 4G -t freebsd-swap -l swap "$i" ||
die "Cannot add freebsd-swap partition to $i. Exiting ..."
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 "$i" ||
die "Cannot add bootcode to "%s". Exiting ..."
done
You may need to hide the errors in a logfile, given that you want to handle the exceptions:
_errlog=${0##*/}_error.log
die() {
[ -n "$1" ] &&
printf >&2 '%s\n' "$1"
exit 1
}
for i in ad0 ad1; do
gpart create -s gpt "$i" 2> "$_errlog" ||
die "Cannot create GPT partition on $i. Exiting ..."
gpart add -s 128 -t freebsd-boot "$i" 2> "$_errlog" ||
die "Cannot add freebsd-boot partition on $i. Exiting ..."
gpart add -s 4G -t freebsd-swap -l swap "$i" 2> "$_errlog" ||
die "Cannot add freebsd-swap partition to $i. Exiting ..."
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 "$i" 2> "$_errlog" ||
die "Cannot add bootcode to "%s". Exiting ..."
done