The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > UNIX for Dummies Frågor & Svar
.
google unix.com



UNIX for Dummies Frågor & Svar Om du inte är säker på var att skriva en UNIX eller Linux fråga efter det här. Alla UNIX-och Linux-nybörjare välkomna!

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Jämför dag från DB2 tabellen till gårdagens Unix systemdatumet sasaliasim Shell-programmering och Skript 9 12-01-2008 11:37
Hämta datum och tid för tidigare 1 timme från dagens datum spch2o Shell-programmering och Skript 5 08-29-2008 04:32
Behandling en loggfil baserat på datum och tid för input och datum och tid på loggfilen snygga Shell-programmering och Skript 4 03-16-2008 11:23
jämföra datum med datum i filen siog UNIX for Dummies Frågor & Svar 2 10-04-2006 12:10
jämföra dagens datum med datum i en fil siog UNIX for Dummies Frågor & Svar 4 10-04-2006 11:55

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 09-28-2006
Jamil Qadir Jamil Qadir is offline
Registered User
  
 

Join Date: Sep 2006
Inlägg: 13
Jämför Datum och tid

Hej

kan någon sända jag koden för att jämföra två datum och köra ett shell script. Följande är den kod som jag actully vill men jag får fel.

anse


Jamil

. / opt / home / rep / .profile

#! / bin / sh
VALUE \u003d `sqlplus ljudlös rep/Ndk38f7 @ dw <<END
uppsättning pageSize 0 kommentarer off kontrollera bort rubriken off echo off
Välj TRUNC (max (chg_dt)) från NOT_SCHEDULED_INSTALL;
exit;
Slut "
Värde2 \u003d `sqlplus ljudlös rep/Ndk38f7 @ dw <<END
uppsättning pageSize 0 kommentarer off kontrollera bort rubriken off echo off
Välj TRUNC (SYSDATE) från dubbla;
exit;
End "
if [[$ value-eq $ värde2]]; sedan
echo "No rader återvände från databas"
exit 0
annan
echo $ värde2
echo $ value
fi
  #2 (permalänk)  
Old 09-28-2006
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.748
Oracle har redan datum aritmetik, inte ksh inte - använda PL / SQL:
Kod:
#!/bin/ksh

date_equal()
{

sqlplus -silent rep/Ndk38f7@dw <<END
set pagesize 0 feedback off verify off heading off echo off serverout on size 100000
DECLARE 
   date1 DATE:=NULL;
   date2 DATE:=NULL;
BEGIN
DBMS_OUTPUT.enable(100000);
select trunc(max(chg_dt)) into date1 from NOT_SCHEDULED_INSTALL;
select trunc(sysdate) into date2 from dual;
IF date1 = date2
THEN
	DBMS_OUTPUT.put_line('1');
ELSE
    DBMS_OUTPUT.put_line('0');
END IF;
END;
/
exit;
END

}

if [[ $(date_equal) -eq 1 ]] ; then
# do something 
else
# do something else
fi
  #3 (permalänk)  
Old 09-29-2006
jamilmjq jamilmjq is offline
Registered User
  
 

Join Date: Sep 2006
Inlägg: 1
datum och tid problem

Tack för ditt svar.
Problemet är att det inte fungerar, att det alltid skriva ut "inte ok"

if [[$ (date_equal)-eq 1]]; sedan
echo "OK"
annan
echo "not ok"
fi

tack
  #4 (permalänk)  
Old 09-29-2006
boppr6470 boppr6470 is offline
Registered User
  
 

Join Date: Aug 2006
Inlägg: 8
Och nu något annorlunda

Jag har använt det förut och det fungerar ganska bra.
Har ett par olika saker med datum beroende på parametrar.

#! / usr / bin / ksh

# Datecalc - Perderabo's date calculator
#

USAGE \u003d "\
datecalc-ett år månad dag - år månad dag
datecalc-ett år månad dag [-|+] n
datecalc-d år månad dag
datecalc-D år månad dag
datecalc-j år månad dag
datecalc-jn
datecalc-l år månad
använda \ "datecalc-help \" för användning av mer dokumentation "

DOKUMENTATION \u003d "\
datecalc Version 1.1

datecalc gör många manipulationer med datum.
datecalc-en är för datum aritmetiska
datecalc-d eller-D konverterar ett datum för veckodagen
datecalc-j konverterar hittills till eller från julian dag
datecalc-l utgångar den sista dagen i en månad

Alla datum måste vara mellan åren 1860 och 3999.

datecalc-a följt av 7 parametrar beräknar
antalet dagar mellan två datum. Parametrar 2-4 och 6-8
måste datum i Ymd form, och parameter 5 skall vara ett minus
sign. Resultatet är ett heltal. Exempel:

> Datecalc-en 1960 12 31 - 1922 2 2
14212


datecalc-a följt av 5 parametrar beräknar
en ny dag avstånd från ett visst datum, Parameters 2-4 måste
vara ett datum i Ymd form, måste parameter 5 vara + eller -, och
parameter 6 måste vara ett heltal. Produktionen är ett nytt datum.
Exempel:

> Datecalc-en 1960 12 31 + 7
1961 1 7


datecalc-d följt av 3 parametrar kommer att konvertera ett datum
till en dag-för-vecka. Parametrar 2-4 måste vara ett datum i Ymd
form. Exempel:

> Datecalc-d 1960 12 31
6


datecalc-D är lik-d förutom att det visar namnet på
dagen. Exempel:

> Datecalc-D 1960 12 31
Lördag


datecalc-j följt av 3 parametrar kommer att konvertera ett datum
att Modified Julian Day nummer. Exempel:
> Datecalc-J 1960 12 31
37299


datecalc-j följt av en enda parameter kommer att konvertera
en Modified Julian Day nummer till ett datum. Exempel:
> Datecalc-j 37.299
1960 12 31


datecalc-l följd av år och månad kommer att skriva ut den sista
dagen i angiven månad. Observera att genom att markera den sista dagen i
Februari du kan testa för skottår. Exempel:
> Datecalc-l 2002 2
28 "


lastday () (
heltal år månad språng
# Ja fe ma ap ma jn jl AG se oc no de
SET-A mlength xx 31 28 31 30 31 30 31 31 30 31 30 31

år \u003d $ 1
if ((year <1860 | | år> 3999)), sedan
print-U2 år utom räckhåll
avkastning 1
fi
månad \u003d $ 2
if ((månad <1 | | månad> 12)), sedan
print-U2 månad out of range
avkastning 1
fi

if ((månad! \u003d 2)), sedan
print $ (mlength [månad])
return 0
fi

språng \u003d 0
if ((! (år% 100))) och sedan
((! (år% 400))) & & språng \u003d 1
annan
((! (år% 4))) & & språng \u003d 1
fi

feblength \u003d 28
((hopp)) & & feblength \u003d 29
print $ feblength
return 0
)


date2jd () (
heltal ijd dag månad år mnjd jd Lday

år \u003d $ 1
månad \u003d $ 2
dag \u003d $ 3
Lday \u003d $ (lastday $ år $ månad) | | exit $?

if ((dag <1 | | dag> Lday)), sedan
print-U2 day out of range
avkastning 1
fi

((standard_jd \u003d dag - 32075
+ 1461 * (år + 4800 - (14 - månad) / 12) / 4
+ 367 * (månad - 2 + (14 - månad) / 12 * 12) / 12
- 3 * ((år + 4900 - (14 - månad) / 12) / 100) / 4))
((jd \u003d standard_jd-2400001))


print $ jd
return 0
)


jd2dow ()
(
heltal jd dow numeric_mode
SET + A dagar Söndag Måndag Tisdag Onsdag Torsdag Fredag Lördag

numeric_mode \u003d 0
if [[$ 1 \u003d-n]]; sedan
numeric_mode \u003d 1
växla
fi


jd \u003d $ 1
if ((jd <1 | | jd> 782028)), sedan
print-u2 Julian day out of range
avkastning 1
fi

((dow \u003d (jd 3)% 7))

if ((numeric_mode)), sedan
print $ dow
annan
print $ (dagar [dow])
fi
återgå
)

jd2date ()
(
heltal standard_jd Temp1 Temp2 jd år månad dag

jd \u003d $ 1
if ((jd <1 | | jd> 782028)), sedan
utskrift Julian day out of range
avkastning 1
fi
((standard_jd \u003d jd +2400001))
((Temp1 \u003d standard_jd + 68569))
((Temp2 \u003d 4 * temp1/146097))
((Temp1 \u003d Temp1 - (146097 * Temp2 + 3) / 4))
((år \u003d 4000 * (Temp1 + 1) / 1461001))
((Temp1 \u003d Temp1 - 1461 * år / 4 + 31))
((month \u003d 80 * Temp1 / 2447))
((dag \u003d Temp1 - 2447 * månad / 80))
((Temp1 \u003d månad / 11))
((månad \u003d månad + 2 - 12 * Temp1))
((år \u003d 100 * (Temp2 - 49) + år + Temp1))
print $ år $ $ månad dag
return 0
)


#
# Parse parametrar och få att fungera.
gäller $ 1 i
-a) if (($ # \u003d\u003d 8)), sedan
if [[$ 5! \u003d -]]; sedan
print-U2 - "$ USAGE"
exit 1
fi
JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $?
JD2 \u003d $ (date2jd $ 6 $ 7 $ 8) | | exit $?
((jd3 \u003d JD1-JD2))
print $ jd3
exit 0
Elif (($ # \u003d\u003d 6)), sedan
JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $?
fall 5 $ i
- | +) Eval '((' JD2 \u003d $ (JD1) $ (5) $ (6 }'))'
jd2date $ JD2
exit $?
;;
*)
print-U2 - "$ USAGE"
exit 1
;;
ESAC

fi
;;

-d |-D) if (($ #! \u003d 4)), sedan
print-U2 - "$ USAGE"
exit 1
fi
JD1 \u003d $ (date2jd $ 2 $ 3 $ 4) | | exit $?
numerisk \u003d- n
[[$ 1 \u003d-D]] & & numerisk \u003d ""
eval jd2dow $ numerisk $ JD1
exit $?
;;

-j) if (($ # \u003d\u003d 4)), sedan
date2jd $ 2 $ 3 $ 4
exit $?
Elif (($ # \u003d\u003d 2)), sedan
jd2date $ 2 $ 3 $ 4
exit $?
annan
print-U2 - "$ USAGE"
exit 1
fi
;;

-l) if (($ # \u003d\u003d 3)), sedan
lastday $ 2 $ 3
exit $?
annan
print-U2 - "$ USAGE"
exit 1
fi
;;

-help) print - "$ USAGE"
print ""
print - "$ DOKUMENTATION"
exit 0
;;

*) Print-U2 - "$ USAGE"
exit 0
;;


ESAC

# inte nått
exit 7
  #5 (permalänk)  
Old 10-02-2006
cero cero is offline
Registered User
  
 

Join Date: Aug 2006
Inlägg: 56
Ett annat sätt skulle vara:
Kod:
#!/usr/bin/ksh
RET=`sqlplus -silent rep/Ndk38f7@dw <<END
set pagesize 0 feedback off verify off heading off echo off
select decode(d1,d2,'No rows',to_char(d1)||' '||to_char(d2)) from
(select trunc(max(chg_dt)) d1 from NOT_SCHEDULED_INSTALL),
(select trunc(sysdate) d2 from dual);
exit;
END`
if [[ "$RET" = "No rows" ]] ; then
   # do something
else
  # do something else
fi
Låt Oracles avkoda-funktion jämförs för dig.
  #6 (permalänk)  
Old 01-10-2007
Jamil Qadir Jamil Qadir is offline
Registered User
  
 

Join Date: Sep 2006
Inlägg: 13
UNIX-script

Jag behöver lite förändring i det här skriptet.

Jag behöver när dagen är mindre än SYSDATE det sova för 1 houre annars köra min abc.sh script.

tack

Jamil
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 04:22.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0