Aller au contenu

lancement execution script SHELL


Messages recommandés

salut à tous, SVP je cherche comment tester ou executer un script SHELL,

et specialement à partir de l\'editeur vi

//

vi test.sh

# i pour l\'insertion

echo ceci est un test concernant les parametres

echo premier param est : $1

echo le secnd est : $2

la totale est : $*

<escp>:wq!

//

voila apres avoir ecris ce mini script je sais pas comment le lancer sur la ligne de commande

Merci encore de pouvoir m\'aider...

Lien vers le commentaire
Partager sur d’autres sites

salut à tous et merci d'avance pour l'aide,j'en ai vraiement besoin,

voila j'ai pas su comment extraire

des champs precis d'un fichier, normalement je dois utiliser la command cut, mais

sachant que dans mon fichier les champs sont separés pas plusiuers <espace> alors que l'option -d' ' de la commande ne traite q'un seul caractere, j'ai du mal à m'en sortir, par exemple, je veux extraire les 3 premiers champs du fichier dont on a stocké le resultat de la commande df.

Merci encore pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai combiné les 2 sujets, y'a pas besoin d'en créer autant :chinois:

1 er problème :

soit tu lance ton script avec :

 $ sh test.sh

soit tu le rend exécutable, puis tu le lance comme un exécutable :

 $ chmod +x test.sh
$ ./test.sh

2 ème :

df affiche la sortie en alignant avec des espaces, et cut ne semble pas permettre de gérer les séparateurs multiples (genre plusieurs espaces)

Mais par contre, tu peux utiliser awk simplement :

 $ df | grep "/" | awk '{print $1" "$2" "$3}'

Lien vers le commentaire
Partager sur d’autres sites

Premièrement évite de poster deux messages en deux minutes. Tu as le bouton éditer pour ça.

Ensuite pour éxécuter le scritp, c'est

chmod +x test.sh #On donne le droit d'éxécuter
./test.sh #on exécute

La première ligne n'est à faire qu'une seule fois bien sûr.

Autre solution :

sh test.sh

Pour cut, c'est sûr il est pas très pratique avec les espaces lorsque le nombre est indéterminé. Tu peux utiliser awk sinon ou passer un coup de sed avant.

echo "1   2  3   4	 5				   6" | sed "s/ */ /g"
echo "1   2  3   4	 5				   6" | awk {'print $3'}

EDIT : Bon j'ai rien dit pour les deux messages à la suite alors :chinois:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...