LINUX.ORG.RU

Не понимаю почему case $x1 in .... case $x2 in ... дублирует записи

 


0

1

Необхоимо проверить наличие трех последних бэкапов, вычислить длину файлов и в зависимости от длины вывести размер файла в удобочетаемой форме. Длина размеров бэкапа заносится в файл 1.log В файле может три цифры, две, одна и ни одной (не было бэкапов) Пример: в файле есть текст 11 11 (число 11 пробел число 11) Зпуская скрипт,получаю по две записи от каждого бэкапа. Почему это происходит? переменная x1 равна 11 переменная x2 равна 11 переменная x3 равна null в файл записывается следующие строки

Size Kb |MON| D|MiSs| Name 49 872 896 Feb 18 23:12 tape130218_1 49 948 160 Feb 19 23:15 tape130219_2 49 872 896 Feb 18 23:12 tape130218_1 49 948 160 Feb 19 23:15 tape130219_2

#!/bin/bash

# вставляем данные бэкапов за последние три дня cp /dev/null 3.log find /optx/gebo-13 -mtime -3 -name tape* -ls >> 3.log cp /dev/null 1.log var2=`awk '{print substr(length($7),1,2)}' 3.log`

echo $var2 >> 1.log x1=`awk '{print $1}' 1.log` echo $x1 echo «x1» x2=`awk '{print $2}' 1.log` echo $x2 echo «x2» x3=`awk '{print $3}' 1.log` echo $x3 echo «x3»

case $x1 in 11) awk '{print substr($7/1024,1,2) " " substr($7/1024,3,3) " " substr($7/1024,6,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; 12) awk '{print substr($7/1024,1,3) » " substr($7/1024,4,3) " " substr($7/1024,7,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; 13) awk '{print substr($7/1024,1,1) » " substr($7/1024,2,3) " " substr($7/1024,5,3) " " substr($7/1024,8,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; *) echo „alarm x1“ ;; esac

case $x2 in 11) awk '{print substr($7/1024,1,2) » " substr($7/1024,3,3) " " substr($7/1024,6,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; 12) awk '{print substr($7/1024,1,3) » " substr($7/1024,4,3) " " substr($7/1024,7,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; 13) awk '{print substr($7/1024,1,1) » " substr($7/1024,2,3) " " substr($7/1024,5,3) " " substr($7/1024,8,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; *) echo „alarm x2“ ;; esac

case $x3 in 11) awk '{print substr($7/1024,1,2) » " substr($7/1024,3,3) " " substr($7/1024,6,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; 12) awk '{print substr($7/1024,1,3) » " substr($7/1024,4,3) " " substr($7/1024,7,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; 13) awk '{print substr($7/1024,1,1) » " substr($7/1024,2,3) " " substr($7/1024,5,3) " " substr($7/1024,8,3) " " $8 " " $9 " " $10 " " substr($11 length($11),length($11)-11,12) " «}' 3.log >> 2.log ;; *) echo „Alarm x3“ ;; esac

# чистимся #rm 3.log #rm 2.log #rm 1.log



Последнее исправление: serg_6162 (всего исправлений: 1)


#!/bin/bash

# вставляем данные бэкапов за последние три дня
cp /dev/null 3.log
find /optx/gebo-13 -mtime -3 -name tape* -ls >> 3.log
cp /dev/null 1.log
var2=`awk '{print substr(length($7),1,2)}' 3.log`
echo $var2 >> 1.log
x1=`awk '{print $1}' 1.log` 
echo $x1
echo "x1"
x2=`awk '{print $2}' 1.log` 
echo $x2
echo "x2"
x3=`awk '{print $3}' 1.log` 
echo $x3
echo "x3"


case $x1 in 
11)
awk '{print substr($7/1024,1,2) " " substr($7/1024,3,3) " " substr($7/1024,6,3)}' 3.log >> 2.log
;;     
12)
awk '{print substr($7/1024,1,3) " " substr($7/1024,4,3) " " substr($7/1024,7,3)}' 3.log >> 2.log
;;
13)
awk '{print substr($7/1024,1,1) " " substr($7/1024,2,3) " " substr($7/1024,5,3) " " substr($7/1024,8,3)}' 3.log >> 2.log
;;
*)
echo "alarm x1"
;;
esac


case $x2 in 
11)
awk '{print substr($7/1024,1,2) " " substr($7/1024,3,3) " " substr($7/1024,6,3)}' 3.log >> 2.log
;;     
12)
awk '{print substr($7/1024,1,3) " " substr($7/1024,4,3) " " substr($7/1024,7,3)}' 3.log >> 2.log
;;
13)
awk '{print substr($7/1024,1,1) " " substr($7/1024,2,3) " " substr($7/1024,5,3) " " substr($7/1024,8,3)}' 3.log >> 2.log
;;
*)
echo "alarm x2"
;;
esac


case $x3 in 
11)
awk '{print substr($7/1024,1,2) " " substr($7/1024,3,3) " " substr($7/1024,6,3)}' 3.log >> 2.log
;;     
12)
awk '{print substr($7/1024,1,3) " " substr($7/1024,4,3) " " substr($7/1024,7,3)}' 3.log >> 2.log
;;
13)
awk '{print substr($7/1024,1,1) " " substr($7/1024,2,3) " " substr($7/1024,5,3) " " substr($7/1024,8,3)}' 3.log >> 2.log
;;
*)
echo "Alarm x3"
;;
esac
serg_6162
() автор топика
Ответ на: комментарий от serg_6162
cp /dev/null 3.log
find /optx/gebo-13 -mtime -3 -name tape* -ls >> 3.log

замените хотя бы на:

find /optx/gebo-13 -mtime -3 -name tape* -ls > 3.log

cp /dev/null 1.log
var2=`awk '{print substr(length($7),1,2)}' 3.log`
echo $var2 >> 1.log

Замените хотя бы на:

var2=`awk '{print substr(length($7),1,2)}' 3.log | tee 1.log`

В общем, вам лучше дать примеры входных данных и что хотите получить. Можете так же указать и выходные данные этого скрипта.

kostik87 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.