1 votos

La función de fecha cl funciona de manera diferente en las máquinas Intel y M1

Tengo un shell script para calcular el número de días de una fecha determinada:

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

En mi MBP de 2019 (Intel) funciona. En mi Mac mini 2020 (M1), no.

El error:

date: illegal time format
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: line 1: (1614815225-)/(3600*24): syntax error: operand expected (error token is ")/(3600*24)")

Las páginas man son diferentes. En el MBP es

DATE(1) User Commands DATE(1)

En el Mac mini es

DATE(1)  BSD General Commands Manual  DATE(1)
  1. ¿Qué está pasando aquí?
  2. ¿Cómo puedo recuperar la antigua funcionalidad?

1voto

Al Gorithm Puntos 21

La respuesta (gracias a una pista de @mmmmmm en los comentarios) es que en el Mac mini M1 hay que instalar los coreutils de gnu (por ejemplo, a través de Homebrew), pero como los nombres de algunos de ellos se solapan con los de utilidades similares (¡pero no idénticas!) que vienen con el Mac mini, el sistema antepone automáticamente la "g" a cualquier utilidad cuyos nombres se solapen.

Por lo tanto, el problema se resolvió en mi caso cambiando date a gdate en mi código.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X