Re: помогите с bash и условием
16:53 Thu 22 Aug , Владимир Скубриев wrote:
> On 22.08.2013 16:43, Andrey Tataranovich wrote:
> >14:35 Thu 22 Aug , Владимир Скубриев wrote:
> >>TO="/dev/sdb"
> >>SERIAL="RTF57NGH"
> >>TO_DISK_INFO=`udevadm info --query=all -n $TO`
> >>
> >>echo $TO_DISK_INFO | grep SERIAL_SHORT | grep -q $SERIALTO
> >># проверяем результат последней команды
> >>if [ $? -ne 0 ];
> >>then
> >> echo " Parametr <SERIALTO> do not correspond hard drive <TO> -
> >>Exiting, beacuse we cannot delete ALL DATA ..."
> >> echo " ... !!! BE Careful !!! ..."
> >> exit 3
> >>fi
> >Проверить наличие нужного диска можно проще:
> >
> >BACKUP_DISK="/dev/disk/by-id/usb-Easy_Disk_AA040127_007375-0:0"
> >if [ ! -b "$BACKUP_DISK" ]; then
> > echo "Correct backup disk not found: $BACKUP_DISK" >&2
> > exit 1
> >fi
> >
> Я стремился к универсальности, вот:
>
> #!/bin/bash
>
> FROM=$1
> TO=$2
> SERIALTO=$3
>
> TO_DISK_INFO=`udevadm info --query=all -n "$TO"`
>
> if [ ! $# == 3 ]; then
> echo "Usage: <FROM> <TO> <SERIALNUMBER_OF_DISK_TO>"
> exit 1
> fi
>
> if [[ ! -b "$2" ]] || [[ ! -b "$1" ]]; then
> echo "First | Second parametr is not a valid Block device"
> exit 2
> fi
>
> echo "$TO_DISK_INFO" | grep SERIAL_SHORT | grep -q "$SERIALTO"
> if [ $? -ne 0 ]; then
> echo " Parametr <SERIALTO> do not correspond hard drive <TO> -
> Exiting, beacuse we cannot delete ALL DATA ..."
> exit 3
> fi
>
> echo "$TO_DISK_INFO" | grep ID_BUS | grep -qi usb
> if [ $? -ne 0 ]; then
> echo " This disk is not USB Backup Disk - Exiting, beacuse we
> cannot delete ALL DATA ..."
> exit 4
> fi
Ваш вариант сложнее. В моем варианте проверяется все необходимое, чтобы
не стереть неверный диск. И константу BACKUP_DISK можно сразу использовать
в скрипте вместо /dev/sd?.
--
WBR, Andrey Tataranovich
Reply to: