[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: