2013-03-01 6 views
0

J'espère que j'utilise la bonne terminologie ici, mais je veux écrire un script à exécuter en unix, qui va exécuter un certain nombre de commandes séquentiellement (c'est-à-dire l'une après l'autre). Pourrais-je mettre juste les commandes que je veux dans le bloc-notes, les séparer par un saut de ligne, puis enregistrez comme script.sh puis faireComment écrire un script sh?

sh script.sh 
+0

Google est-il en panne? Je pourrais trouver une abondance de réponses à la question quand je l'ai entré dans la boîte de recherche ... – ppeterka

+0

Votre déclaration est correcte mais ce n'est pas vraiment une question. –

+0

Par "notepad", voulez-vous dire l'éditeur de texte Windows? Utilisez-vous Cygwin? Si oui, faites attention aux fins de ligne; sh et bash sur Cygwin s'interrompent fréquemment sur les fins de ligne Windows. 'man dos2unix' pour plus d'informations. –

Répondre

0

Vous aurez besoin d'un shebang/hashbang en haut

#!/bin/sh

+0

Vous ne ..la déclaration OP était correcte. –

+1

Ouais, juste essayé sans. Tous les jours une journée d'école :-) – Rawkode

+0

Génial, merci les gars! – TheFoxx

0

Vous devez vous assurer que le bit d'exécution est défini pour votre fichier de script. En outre, vous pouvez spécifier quelle application utiliser pour exécuter votre script. Par défaut, si vous ne spécifiez pas une application, il utilisera par défaut le shell en cours d'exécution de votre script. généralement je mets l'application spécifique comme les suivants ...

#!/bin/bash 

qui précisera que bash devrait être utilisé pour traiter votre script. Si vous entrez dans une script spéciale, vous voulez être précis car il existe des différences entre sh, bash, ksh, etc.

De plus, puisque vous avez mentionné que vous vouliez exécuter plusieurs commandes dans l'ordre, vous pouvez utiliser quelques conditions.

Une condition facile serait d'utiliser soit && ou || dans votre script. Cela vous permettra de spécifier ce qui se passe lorsque la commande s'exécute avec succès ou non. Par exemple ...

#!/bin/bash 

command1 || exit 
command2 || exit 
command3 

Cela tenterait d'exécuter commande1 ou sortie en cas d'échec (code de retour supérieur à 0). Sinon, il continuerait à exécuter les lignes suivantes.

Un autre exemple qui utilise la syntaxe && qui signifie « et » ...

command1 && command2 && command3 

Enfin, vous pouvez vérifier les codes de retour spécifiquement et répondre avec des messages d'erreur. Ce dernier exemple est un script shell plus avancé, mais quelque chose que vous voudrez peut-être poursuivre plus avant. Si vous entrez dans un script conditionnel, n'oubliez pas d'ajouter votre shebang (#!/Bin/bash) pour le shell approprié.

0

Je l'ai seulement testé dans bash, mais vous pouvez simplement mettre chaque commande sur sa propre ligne, sans shebang ou quoi que ce soit de nécessaire. Vous devrez donner le fichier autorisations d'exécution avec chmod, vous pouvez l'exécuter avec

./myscript 

(en supposant que « MyScript » est dans le répertoire courant).