Les shells

Ce sont des programmes ayant plusieurs fonctions: Il y a 2 familles:

Lancement

En interactif, le comportement est différent selon que c'est un shell de login (= de démarrage) ou non.

Appel

Ce peut être un appel:

Syntaxe

Le format n'est pas du tout libre, mais par ligne.
Les commentaires sont introduits par un '#'.
Les identificateurs sont une lettre, suivi de lettres ou chiffres. Il y a des mots réservés.

Caractères spéciaux

Règle : chaque ligne subit des substitutions puis est interprété conformément à la syntaxe du shell.
Classe 1
On se base ici sur la liste des noms de fichiers (résultat de la commande ls):
Classe 2 : le $
On se base ici sur des variables internes au shell, distinctes des variables d'environnement.
Classe 3: les protections

Les redirections

Pour un shell, tout process a Par défaut, l'entrée standard est le clavier, la sortie standard et la sortie d'erreur sont l'écran.
Mais on peut rediriger: En sh: En csh:

Constantes, types de données

Il n'y a pas de constante, tout en shell est chaîne de caractères.

(csh) Les tableaux

Indicé à partir de 1.
Exemples:
	foreach i (*)
	ls = (*)
	set compte = ( un deux trois )

Les affectations en sh

var = valeur Si on a des calculs à faire, on se sert du programme expr(1).
Si on a des tests à faire, on se sert du programme test(1) appelé aussi '['.
Exemple:
	i = `expr $i + $j`
	i = `expr $i '*' 2`
	if [ $a = test ]
	if test $a = test
	if [ -f .profile ]

Les affectations en csh

@ var = expression
	@i = $i + $j
	@i = $i * 2
	if ($a == test) ...
	if (-f .cshrc) ...

Les instructions en sh

Les instructions en csh

Quelques programmes