Skip Navigation Links
Accueil
Java Standard EditionExpand Java Standard Edition
Java EE 5Expand Java EE 5
Visual Basic .Net 2005Expand Visual Basic .Net 2005
Visual C++ .Net 2005Expand Visual C++ .Net 2005
Visual C# .Net 2005Expand Visual C# .Net 2005
Cours ASP .Net 2.0Expand Cours ASP .Net 2.0
PostgresqlExpand Postgresql
LinuxExpand Linux
Visual Studio 2008Expand Visual Studio 2008
ASP 3.0 ClassiqueExpand ASP 3.0 Classique
Cours Javascript - DOM - DHTMLExpand Cours Javascript - DOM - DHTML
Cours AjaxExpand Cours Ajax
VBAExpand VBA
AssembleurExpand Assembleur
PerlExpand Perl
MembresExpand Membres
L'auteur du site
Nouveautés sur le site
Contacts
Plan du site
Accueil > Linux > Les scripts C-Shell
____________________________________________________________________________________________________
Connexion

LES SCRIPTS C-SHELL

26/12/07
Mettre :
# ! /bin/csh
Comme première ligne à votre script pour déclarer qu’il est en C-Shell

Exécution du script : Attention, pour exécuter votre script, après avoir sauvegardé
votre fichier par exemple sous le nom monFic.csh, n’oubliez pas de donner les droits
d’exécution par chmod 777 monFic.csh . Vous pouvez alors l’exécuter par ./monFic.csh

I) Installation du C-Shell

1)Installation C-Shell sous Fedora Core 8

Installer le paquet tcsh( par exemple par Applications->ajout/suppression de programmes), qui est un c-shell.
On a alors /bin/tcsh installé . Et on a aussi un lien symbolique csh, qui pointe sur tcsh.

II) Le C-Shell

1) Les commentaires

Les commentaires sont précédés de # sur la ligne du commentaire( équivalent du // de c++)
Exemple :

#ceci est un commentaire

2) La commande echo

La commande echo est particulièrement utile dans les scripts.
Elle sert à afficher quelque chose à l’écran.
Remarque : echo passe à la ligne, après avoir affiché.

echo semble évident, mais sans echo, comment ferions-nous pour afficher quelque chose à l’écran, par exemple un message ou le contenu d’une variable ?

Exemple dans un script :

echo « ceci est un message »

3) Pas de caractère de fin de ligne

Pas de caractère de fin de ligne, pas de « ; » comme le C. Le choix fait ici est qu’une ligne doit tenir sur une ligne du source. Dans ce cas, on n’a plus besoin d’un marqueur de fin de ligne.

III) Les variables

Remarque : le paragraphe ci-dessus sur les variables concerne notamment le C-Shell.

1)Remarques sur le setenv

Ce qui suit est juste des explications qui ne nous servirons pas forcément ici, mais que je souhaite mettre à cet endroit car il s’agit de C-Shell.

La commande C-shell setenv permet de définir une variable d’environnement.
Exemple : % setenv JAVA_HOME /home/jean/SDK/jdk
La commande setenv ne semble pas fonctionner dans un script C-Shell, mais fonctionne bien en ligne de commande.

Pour afficher le contenu d’une variable d’environnement, en C-Shell, la commande est
% printenv JAVA_HOME
Ou alors %printenv : affiche le contenu de toutes les variables d’environnement.

Si vous êtes en c-shell dans un terminal( en ayant tapé la commande csh), et que vous modifiez une variable d’environnement, la modification sera prise en compte dans le bash shell, lorsque vous retournerez en bash( commande bash).

Remarque : une variable d’environnement modifié, n’est modifiée(ou créée) que pour le terminal où la modification a eu lieu. Si vous ouvrez un autre terminal, vous ne constaterez aucun changement.

2) Assignation d’une valeur à une variable numérique.

@var = expression : assigne une valeur à une variable numérique
Exemple : @var = 3

3) Affectation de variable

set variable valeur affectation

Par défaut toutes les variables sont de type caractère.
Ex : set a = 12 + 15
echo $a affiche 12 + 15, et non 27

- Saisi des éléments à partir du clavier :

set nomvar = $< : initialisation à partir du clavier, le résultat est une chaine.
set nomvar = ($<): initialisation à partir du clavier, le résultat est un tableau

4) Le $

On n’a jamais un nom de variable tout seul( ex. a, tout seul), sauf bien sûr après un set .
Le $ se place avant le nom de la variable, et indique qu’il s’agit d’une variable, et non d’un littéral.

5) Les tableaux

Affectation d’un tableau :
set tab = ( v1 v2 … )
Les éléments du tableau sont indicés de 1 à $#tab
-Taille du tableau : $#tab
-Accès au contenu du tableau :
$tab : la totalité du tableau
$tab[1] : le premier élément
$tab[6-9] : l’élément 6 à l’élément 9
$tab[-9] : du premier au neuvième élément
$tab[6-] : du 6ème au dernier élément

6) Rappel sur la variable prédéfinie $argv

argv : les arguments de la ligne de commande( indicé à partir de 1). C’est un tableau de string
$argv[1]: le premier agurment passé( pas de $argv[0]).

Exemple dans un script C-Shell :
set rep = $argv[1]
echo $argv: ca sait afficher tout, séparé par un espace!

IV) Les caractères spéciaux des scripts C-Shell

1) ` `(Alt gr 7 ) : substitution de commande

C’est une façon de communiquer le résultat d’une commande, à notre script!

Exemple script :

foreach nom (`cat monFic`) etc

Ou encore(script): set ensemble = (`find $rep –type f –name $nom`)

Ici on déclare la variable nommée ensemble comme un tableau de chaines( car on a mis des parenthèses) ; et on initialise ce tableau avec le résultat de la commande find, qui elle-même va retourner un tableau de chaînes( un tableau de tous les noms de fichiers trouvés par find).

Exemple de script :

# ! /bin/csh
foreach nom (`cat ficFruits.txt`)
echo $nom
end

Exemple de fichier ficFruits.txt:
pommes poires bananas
cerises framboises
fraises

résultat : ca marche, même avec les retours à la ligne !
Remarque : echo passe à la ligne.

Ici, chaque chaine du tableau de chaines renvoyée par cat est une ligne du fichier( ce choix du C-Shell est logique, il n’aurait pas été intéressant de découper en mots par défaut).

V) Les mots-clés

1)Le while

Exemple de while :
while ( $i <= $#tab )


end

2)Le if

La condition est mise en parenthèses, comme en C.

Exemple de script:

if ( $status == 0 ) then

endif

3) le switch

switch( $age)
   case 15 : case 16 : case 17 :
   case 18 :
      echo « encore jeune »
   breaksw
   case 19 :
      echo « bel âge ! »
   case 20 :
      echo « tout rond ! »
   default :
      echo « J’ai pas prévu votre âge ! »
endsw

Remarque : le « sw » du endsw et du breaksw vient de « switch ».

4) Le foreach

Exemple de script :

#! /bin/csh

#Auteur Sabri Koffler

if ($#argv == 0) then
   echo "Veuillez entrer au moins un argument"
else
   echo "la liste des arguments est la suivante:"
   foreach argument ( $argv )
      echo $argument
   end
endif


 On remarque qu’il n’y a pas de $ devant le argument qui est juste après le mot-clé foreach, tout comme il n’y en avait pas après un set, car il s’agit d’une déclaration, on déclare quelque chose, donc intuitivement, on sent bien qu’il est naturel de ne pas mettre le $.

5) Les opérateurs de test sur les fichiers :

-e fic : c’est vrai si fic existe
-f fic : c’est vrai si fic est un fichier
-r fic c’est vrai si l’utilisateur a le droit de lecture sur fic
-w fic pareil pour écriture
-x fic pareil pour exécution
-o c’est vrai si l’utilisateur est propriétaire du fichier
-z c’est vrai si fic existe et est de taille nulle
-d c’est vrai si fic existe et est un répertoire

Exemple script : if ( !-d $rep) then …

RETOUR HAUT