1 votes

cl date fonctionne différemment sur les machines Intel et M1

J'ai un script shell pour calculer le nombre de jours à partir d'une date particulière :

echo D$((($(date +%s)-$(date +%s --date "2018-01-01"))/(3600*24)))

Sur mon MBP 2019 (Intel), ça fonctionne. Sur mon Mac mini 2020 (M1), ça ne fonctionne pas.

L'erreur :

date: format de temps illégal
usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
/usr/local/bin/days: ligne 1: (1614815225-)/(3600*24): erreur de syntaxe : opérande attendu (token d'erreur est ")/(3600*24)")

Les pages de manuel sont différentes. Sur le MBP c'est

DATE(1) User Commands DATE(1)

Sur le Mac mini c'est

DATE(1)  BSD General Commands Manual  DATE(1)
  1. Qu'est-ce qui se passe ici ?
  2. Comment puis-je récupérer l'ancienne fonctionnalité ?

1voto

Al Gorithm Points 21

La réponse (grâce à un conseil de @mmmmmm dans les commentaires) est que dans le Mac mini M1, vous devez installer les coreutils de GNU (par exemple via Homebrew), mais étant donné que les noms de certains d'entre eux entrent en conflit avec les noms d'utilitaires similaires (mais pas identiques !) fournis avec le Mac mini, le système ajoute automatiquement un préfixe "g" à tout utilitaire dont les noms entrent en conflit.

Par conséquent, le problème a été résolu dans mon cas en remplaçant date par gdate dans mon code.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X