web-dev-qa-db-fra.com

Quelle est la date de la ligne de commande correspondant à var = "$ (date +"% x% r% Z ")"

Si je lance la ligne de commande suivante sur Ubuntu:

var="$(date +"%x %r %Z")"
echo var

Je peux obtenir la sortie désirée. Mais si je cours

date +%x %r %Z

On me donnera des erreurs:

date: extra opérande '% r'

Essayez 'date - help' pour plus d'informations.

Alors, quelle est la commande de date correspondant à var="$(date +"%x %r %Z")"? Merci.

1
user5280911

Vous n'avez pas copié exactement la même commande. Vous avez écrit date +"%x %r %Z" entre parenthèses. Cela fonctionne bien à l'extérieur. Sinon, date a trois arguments (+%x, %r et %Z), plutôt qu'un (+%x %r %Z).

De man bash:

Lorsque vous utilisez le formulaire $ (commande), tous les caractères entre les parenthèses constituent la commande; aucun n'est traité spécialement.
Les substitutions de commandes peuvent être imbriquées.

Les parenthèses étant associées avant d'évaluer le contenu, la commande n'est pas scindée sous la forme $(date +%x, %r, %Z).

Remarque :
Vous avez oublié le $ de echo $var.

4
user285259

Alors, quelle est la commande de date correspondant à var = "$ (date +"% x% r% Z ")"?

Eh bien, comme déjà indiqué dans une autre réponse que vous avez manqué de citer les options à droite, il devrait être au moins:

date +"%x %r %Z"

Ceci est nécessaire parce que vous utilisez des espaces pour séparer les différentes informations. La page de manuel pour la date suggère d'utiliser - ou _, ce qui vous permet d'omettre le en citant tous ensemble dans un terminal normal, ou vous échappez aux espaces blancs.


Exemples:

  • en utilisant '-' comme diviseur

    date +%x-%r%Z
    

    donne le résultat suivant:

    21.09.2018-11:30:15 CEST
    
  • en utilisant '_' comme diviseur

    date +%x_%r%Z
    

    donne le résultat suivant:

    21.09.2018_11:30:15 CEST
    
  • utilisant des espaces blancs échappés comme diviseur

    date +%x\ %r%Z
    

    donne le résultat suivant:

    21.09.2018 11:30:15 CEST
    
  • ne pas utiliser de diviseurs du tout

    date +%x%r%Z
    

    donne le résultat suivant:

    21.09.201811:30:15 CEST
    

Reste pour un cas d'utilisation spécial. Lorsque vous essayez d'incorporer la date dans une commande crontab, vous devez également vous échapper du signe %. Donc, en tant qu’information non divisée, la commande ressemblerait à ceci (Les règles mentionnées précédemment s’appliquent pour s’échapper encore):

date +\%x\%r\%Z
1
Videonauth