GNU/Linux >> Tutoriels Linux >  >> Linux

Passer les arguments de la ligne de commande au script Bash ?

Je suis nouveau dans la programmation de script bash.

Je souhaite implémenter un script bash "deploymLog", qui accepte en entrée un argument de chaîne (nom).

[[email protected] Desktop]# ./deploymLog.sh name

ici, je veux passer l'argument de chaîne (nom) via la ligne de commande

Dans un premier temps, je dois ajouter l'horodatage actuel avec cette chaîne d'entrée dans un fichier journal, par exemple Logone.txt dans le répertoire courant au format ci-dessous :

[name]=[System time timestamp1]

Comment est-ce possible ?

Réponse acceptée :

$> cat ./deploymLog.sh 
#!/bin/bash

name=$1
log_file="Logone.txt"

if [[ -n "$name" ]]; then
    echo "$1=$( date +%s )" >> ${log_file}
else
    echo "argument error"
fi

Le premier argument d'une ligne de commande peut être trouvé avec le paramètre positionnel $1 . [[ -n "$name" ]] teste pour voir si $name n'est pas vide. date +%s renvoie l'horodatage actuel en heure Unix. Le >> L'opérateur est utilisé pour écrire dans un fichier en ajoutant aux données existantes dans le fichier.

$> ./deploymLog.sh tt

$> cat Logone.txt 
tt=1329810941

$> ./deploymLog.sh rr

$> cat Logone.txt 
tt=1329810941
rr=1329810953

Pour un horodatage plus lisible, vous pouvez jouer avec date arguments.


Linux
  1. Comment effacer l'historique de la ligne de commande BASH sous Linux

  2. Les codes de sortie de la ligne de commande Bash démystifiés

  3. Comment passer un argument de ligne de commande dans un script shell ?

  4. 6 Attendez-vous à des exemples d'arguments de ligne de commande de script

  5. Lire ligne par ligne dans le script bash

Commande de mise en veille Linux (Pause d'un script Bash)

Bash Beginner Series #3 :Passer des arguments aux scripts Bash

Comment lire les arguments de ligne de commande dans les scripts shell ?

Exécutez la commande bash sur le pipeline jenkins

bash :comment passer des arguments de ligne de commande contenant des caractères spéciaux

Bash si sur une seule ligne