Je suis un korn-shell bigotvétéran, assurez-vous donc que je parle à partir d'un certain point de vue.
Je suis à l'aise avec le Bourne shell, ksh88, et ksh93, et je sais que les fonctions qui sont prises en charge dans qui.
Pour une utilisation interactive, prendre ce qui répond à votre besoin. Expérience. J'aime être en mesure d'utiliser le même shell pour l'utilisation interactive et de la programmation.
Je suis passé de ksh88 sur SVR2 à tcsh, à ksh88sun et ksh93. J'ai essayé de bash, et
détesté parce qu'il aplatie mon histoire. Puis j'ai découvert
shopt -s lithist
et tout allait bien. (Le lithist option assure que les nouvelles lignes sont conservées dans votre commande
l'histoire.)
Pour la programmation shell, j'avais sérieusement recommande ksh93 si vous voulez une programmation cohérente de la langue, de la bonne conformité POSIX, et de bonnes performances, comme de nombreuses communes des commandes unix peut
être disponible en tant que fonctions internes.
Si vous voulez la portabilité utiliser au moins deux. Et assurez-vous que vous avez une bonne suite de tests.
Il y a beaucoup de différences subtiles entre les coquilles. Considérons par exemple la lecture à partir d'un tuyau:
b=42 && echo one two three four |
read a b junk && echo $b
Ceci va produire des résultats différents selon les coquilles. Le korn-shell s'exécute pipelines à partir de l'arrière vers l'avant; le dernier élément dans le pipeline s'exécute dans le processus actuel.
Un autre exemple illustrant la cohérence: L' echo
commande en elle-même, qui a été rendu obsolète par la scission entre BSD et unix system v, et chaque introduit leur propre convention pour ne pas imprimer les retours à la ligne (et d'autres comportements). Le résultat de ce qui peut encore être vu dans beaucoup de 'configure' scripts.
Ksh a pris une approche radicale de la que - et introduit l' print
de commande, qui supporte les deux méthodes (l' -n
option de BSD, et le second \c
caractère spécial de SYSV)
Cependant, pour le sérieux de programmation de systèmes, que je recommanderais à autre chose qu'une coquille, comme python, perl. Ou de prendre une étape supplémentaire, et utiliser une plate-forme comme des marionnettes, qui permet de surveiller et de corriger l'état de l'ensemble des grappes de systèmes, avec une bonne vérification.
La programmation Shell est comme nager dans des eaux inconnues, avec de mauvaises cartes de démarrage.
Programmation dans n'importe quelle langue il est nécessaire de connaître sa syntaxe, ses interfaces et de comportement. La programmation Shell n'est pas du tout différent.