GNU/Linux >> Tutoriels Linux >  >> Linux

Bash - Commande de date et espace

La bonne approche consiste à définir votre propre fonction dans votre script Bash.

function my_date {
  date "+%y-%m-%d %H:%M:%S"
}

Vous pouvez maintenant utiliser my_date comme s'il s'agissait d'un programme externe.

Par exemple :

echo "It is now $(my_date)."

Ou simplement :

my_date

Pourquoi votre approche ne fonctionne-t-elle pas ?

Le premier problème est que votre devoir est cassé.

DATE_COMMAND="date "+%y-%m-%d %H:%M:%S""

Ceci est analysé comme une affectation de la chaîne date +%y-%m-%d à la variable DATE_COMMAND . Après le blanc, le shell commence à interpréter les symboles restants d'une manière que vous n'aviez pas prévue.

Cela pourrait être partiellement corrigé en modifiant la citation.

DATE_COMMAND="date '+%y-%m-%d %H:%M:%S'"

Cependant, cela ne résout pas vraiment le problème car si nous utilisons maintenant

echo $($DATE_COMMAND)

Cela ne développera pas correctement l'argument. Le date le programme verra les arguments '+%y-%m-%d et %H:%M:%S' (avec guillemets) au lieu d'une seule chaîne. Cela pourrait être résolu en utilisant eval comme dans

DATE_COMMAND="date '+%y-%m-%d %H:%M:%S'"
echo $(eval $DATE_COMMAND)

où la variable DATE_COMMAND est d'abord étendu à la chaîne date '+%y-%m-%d %H:%M:%S' c'est alors eval uated comme s'il était écrit comme so invoquant ainsi date correctement.

Notez que je ne montre ceci que pour expliquer le problème. eval n'est pas une bonne solution ici. Utilisez plutôt une fonction.

PS Il est préférable d'éviter les chaînes d'identification entièrement en majuscules car celles-ci sont souvent en conflit avec les variables d'environnement ou ont même une signification magique pour le shell.


Échapper à l'espace fonctionne pour moi.

echo `date +%d.%m.%Y\ %R.%S.%3N` 

Linux
  1. Définir la date et l'heure de chaque commande que vous exécutez dans l'historique de Bash

  2. Différence entre " et " sur la ligne de commande (bash) ? ?

  3. L'espace est-il autorisé entre # ! Et /bin/bash à Shebang ?

  4. Commande d'historique montrant le répertoire et la date ?

  5. commande d'exportation bash

Commande de source bash

Commande d'historique sous Linux (historique de bash)

Commande de sortie Bash et codes de sortie

Commande Bash printf

Comment utiliser la commande de date dans les scripts bash sous Linux

Script bash (II)