Probleme script shell linux
loutnek978
Messages postés
22
Statut
Membre
-
zipe31 Messages postés 38797 Statut Contributeur -
zipe31 Messages postés 38797 Statut Contributeur -
Bonjour,
Bonsoir, j'ai un probleme au niveau de l'execution de mon script c-shell. En effet, lorsque j'execute mon script shell, le message suivant apparait:
Unmatched '.
j'aimerais donc savoir à quoi ça correspond. merci et voici mon script :
il permet de récuperer rafales de vents sur un site météo sur 5 jours par exemple du 25 décembre au 30 décembre et de mettre ces infomations dans un fichier texte:
#!/bin/csh
# vent jour mois annee
set annee_actuel = 'date '+%Y''
set annee = $3
set annee_init = $3
set mois = $2
set mois_init = $2
set jour = $1
set jour_init = $1
set bissextile = 0
set bissextile2 = 0
set bissextile3 = 0
set v = 0
set i = 0
set j = 1
#########################################
@ bissextile = $annee % 4
@ bissextile2 = $annee % 400
@ bissextile3 = $annee % 100
while( $annee < 1999 || $annee > $annee_actuel )
echo 'Veuillez entrer une année comprise entre 1999 et '$annee_actuel' ? '
set annee = $<
end
while( $mois > 12 || $mois < 0 )
echo 'Veuillez entrer un mois compris entre 1 (Janvier) et 12 (Décembre) ?'
set mois = $<
end
#Gestion du jour a faire
if( $jour < 10 )then
switch ( $jour )
case 1 :
set jour = 01
breaksw
case 2 :
set jour = 02
breaksw
case 3 :
set jour = 03
breaksw
case 4 :
set jour = 04
breaksw
case 5 :
set jour = 05
breaksw
case 6 :
set jour = 06
breaksw
case 7 :
set jour = 07
breaksw
case 8 :
set jour = 08
breaksw
case 9 :
set jour = 09
breaksw
default :
breaksw
endsw
else
endif
if( $mois < 10 )then
switch ( $mois )
case 1 :
set mois = 01
breaksw
case 2 :
set mois = 02
breaksw
case 3 :
set mois = 03
breaksw
case 4 :
set mois = 04
breaksw
case 5 :
set mois = 05
breaksw
case 6 :
set mois = 06
breaksw
case 7 :
set mois = 07
breaksw
case 8 :
set mois = 08
breaksw
case 9 :
set mois = 09
breaksw
default :
breaksw
endsw
else
endif
#########################################
mkdir TEMPMETEO
cd TEMPMETEO
touch tab
while($i<5)
set url = 'http://meteo-bretagne.fr/archive-observation.php?
icao=07200&d='$jour'&m='$mois'&y='$annee'&metar='
wget "$url" -o m.trace
mv archive* meteo.data
echo $j' ''grep 'km/h' meteo.data | head -1 | cut -d' ' -f3 | cut -d'>' -f2' >> tab
@ i++
if( $i == 5)then
else
@ jour++
endif
@ j++
@ bissextile = $annee % 4
@ bissextile2 = $annee % 400
@ bissextile3 = $annee % 100
if( $mois == 12 && $jour > 31 )then
set jour = 01
set mois = 01
@ annee++
else
endif
if( $mois == 02 && $jour == 30)then
set mois = 03
set jour = 01
else if( $mois == 02 && $jour == 29)then
if( $bissextile != 0)then
set mois = 03
set jour = 01
else
if( $bissextile2 != 0 && $bissextile3 == 0 )then
set mois = 03
set jour = 01
else
endif
endif
else
endif
if( $mois == 04 || $mois == 06 || $mois == 09 || $mois == 11 )then
if( $jour > 30 )then
set jour = 01
@ mois++
else
endif
if( $jour > 31 )then
set jour = 01
@ mois++
else
endif
if( $jour < 10 )then
switch ( $jour )
case 1 :
set jour = 01
breaksw
case 2 :
set jour = 02
breaksw
case 3 :
set jour = 03
breaksw
case 4 :
set jour = 04
breaksw
case 5 :
set jour = 05
breaksw
case 6 :
set jour = 06
breaksw
case 7 :
set jour = 07
breaksw
case 8 :
set jour = 08
breaksw
case 9 :
set jour = 09
breaksw
default :
breaksw
endsw
else
endif
if( $mois < 10 )then
switch ( $mois )
case 1 :
set mois = 01
breaksw
case 2 :
set mois = 02
breaksw
case 3 :
set mois = 03
breaksw
case 4 :
set mois = 04
breaksw
case 5 :
set mois = 05
breaksw
case 6 :
set mois = 06
breaksw
case 7 :
set mois = 07
breaksw
case 8 :
set mois = 08
breaksw
case 9 :
set mois = 09
breaksw
default :
breaksw
endsw
else
endif
end
cd ..
cp TEMPMETEO/tab .
rm -r TEMPMETEO
Bonsoir, j'ai un probleme au niveau de l'execution de mon script c-shell. En effet, lorsque j'execute mon script shell, le message suivant apparait:
Unmatched '.
j'aimerais donc savoir à quoi ça correspond. merci et voici mon script :
il permet de récuperer rafales de vents sur un site météo sur 5 jours par exemple du 25 décembre au 30 décembre et de mettre ces infomations dans un fichier texte:
#!/bin/csh
# vent jour mois annee
set annee_actuel = 'date '+%Y''
set annee = $3
set annee_init = $3
set mois = $2
set mois_init = $2
set jour = $1
set jour_init = $1
set bissextile = 0
set bissextile2 = 0
set bissextile3 = 0
set v = 0
set i = 0
set j = 1
#########################################
@ bissextile = $annee % 4
@ bissextile2 = $annee % 400
@ bissextile3 = $annee % 100
while( $annee < 1999 || $annee > $annee_actuel )
echo 'Veuillez entrer une année comprise entre 1999 et '$annee_actuel' ? '
set annee = $<
end
while( $mois > 12 || $mois < 0 )
echo 'Veuillez entrer un mois compris entre 1 (Janvier) et 12 (Décembre) ?'
set mois = $<
end
#Gestion du jour a faire
if( $jour < 10 )then
switch ( $jour )
case 1 :
set jour = 01
breaksw
case 2 :
set jour = 02
breaksw
case 3 :
set jour = 03
breaksw
case 4 :
set jour = 04
breaksw
case 5 :
set jour = 05
breaksw
case 6 :
set jour = 06
breaksw
case 7 :
set jour = 07
breaksw
case 8 :
set jour = 08
breaksw
case 9 :
set jour = 09
breaksw
default :
breaksw
endsw
else
endif
if( $mois < 10 )then
switch ( $mois )
case 1 :
set mois = 01
breaksw
case 2 :
set mois = 02
breaksw
case 3 :
set mois = 03
breaksw
case 4 :
set mois = 04
breaksw
case 5 :
set mois = 05
breaksw
case 6 :
set mois = 06
breaksw
case 7 :
set mois = 07
breaksw
case 8 :
set mois = 08
breaksw
case 9 :
set mois = 09
breaksw
default :
breaksw
endsw
else
endif
#########################################
mkdir TEMPMETEO
cd TEMPMETEO
touch tab
while($i<5)
set url = 'http://meteo-bretagne.fr/archive-observation.php?
icao=07200&d='$jour'&m='$mois'&y='$annee'&metar='
wget "$url" -o m.trace
mv archive* meteo.data
echo $j' ''grep 'km/h' meteo.data | head -1 | cut -d' ' -f3 | cut -d'>' -f2' >> tab
@ i++
if( $i == 5)then
else
@ jour++
endif
@ j++
@ bissextile = $annee % 4
@ bissextile2 = $annee % 400
@ bissextile3 = $annee % 100
if( $mois == 12 && $jour > 31 )then
set jour = 01
set mois = 01
@ annee++
else
endif
if( $mois == 02 && $jour == 30)then
set mois = 03
set jour = 01
else if( $mois == 02 && $jour == 29)then
if( $bissextile != 0)then
set mois = 03
set jour = 01
else
if( $bissextile2 != 0 && $bissextile3 == 0 )then
set mois = 03
set jour = 01
else
endif
endif
else
endif
if( $mois == 04 || $mois == 06 || $mois == 09 || $mois == 11 )then
if( $jour > 30 )then
set jour = 01
@ mois++
else
endif
if( $jour > 31 )then
set jour = 01
@ mois++
else
endif
if( $jour < 10 )then
switch ( $jour )
case 1 :
set jour = 01
breaksw
case 2 :
set jour = 02
breaksw
case 3 :
set jour = 03
breaksw
case 4 :
set jour = 04
breaksw
case 5 :
set jour = 05
breaksw
case 6 :
set jour = 06
breaksw
case 7 :
set jour = 07
breaksw
case 8 :
set jour = 08
breaksw
case 9 :
set jour = 09
breaksw
default :
breaksw
endsw
else
endif
if( $mois < 10 )then
switch ( $mois )
case 1 :
set mois = 01
breaksw
case 2 :
set mois = 02
breaksw
case 3 :
set mois = 03
breaksw
case 4 :
set mois = 04
breaksw
case 5 :
set mois = 05
breaksw
case 6 :
set mois = 06
breaksw
case 7 :
set mois = 07
breaksw
case 8 :
set mois = 08
breaksw
case 9 :
set mois = 09
breaksw
default :
breaksw
endsw
else
endif
end
cd ..
cp TEMPMETEO/tab .
rm -r TEMPMETEO
A voir également:
- Probleme script shell linux
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Linux reader - Télécharger - Stockage
- Ghost script - Télécharger - Polices de caractères
- Toutou linux - Télécharger - Systèmes d'exploitation
6 réponses
Salut,
Apparemment il manquerait une quote ;-\
Par contre comme le code de CCM ne fait pas la différence entre une quote simple et une quote inverse, pourrais-tu poster ton code sur http://pastebin.fr/ en choisissant le code "bash" (puisque le csh n'est pas présent). ?
Merci
Apparemment il manquerait une quote ;-\
Par contre comme le code de CCM ne fait pas la différence entre une quote simple et une quote inverse, pourrais-tu poster ton code sur http://pastebin.fr/ en choisissant le code "bash" (puisque le csh n'est pas présent). ?
Merci
Normal, tu as du faire un copier coller de ton code, non ?
Regarde sur ce lien : http://pastebin.fr/26614
J'ai changer (ligne 3) les quotes simples par des quotes inverses
J'ai mis la ligne 203 sur une seule.
Et pour finir ligne 209 j'ai aussi changer les quotes.
Chez moi le script de cette façon marche.
Regarde sur ce lien : http://pastebin.fr/26614
J'ai changer (ligne 3) les quotes simples par des quotes inverses
J'ai mis la ligne 203 sur une seule.
Et pour finir ligne 209 j'ai aussi changer les quotes.
Chez moi le script de cette façon marche.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
par contre je crois que les valeurs correspondent pas sur le site...
Pour la récupération de la valeur, un truc du genre devrait faire l'affaire :
Après pour la boucle il doit y avoir plus simple à faire que celle de ton script ;-\
Le csh est obligatoire comme shell ?
wget -q -O- 'http://meteo-bretagne.fr/archive-observation.php?icao=07110&d=15&m=03&y=2004&metar=' | w3m -dump -T text/html | grep -B 1 'Normales calculées' | awk -F'km/h' '{print $2}'
53.7
Après pour la boucle il doit y avoir plus simple à faire que celle de ton script ;-\
Le csh est obligatoire comme shell ?