Estoy escribiendo esto en mi guión. Tiene otras partes pero me quedo atascado solo en esta parte.
if [[$# == $year $month $day ]] ; then
cal $day $month $year
fi
Cuando ejecuto esto me da este mensaje:
[[3: command not found
Entonces, ¿cuál es el problema? ¿Es una sintaxis o un comando real?
Aquí está el resto de mi guión si eso ayuda:
year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)
if [[$# == $year $month $day ]] ; then
cal $day $month $year
fi
Respuesta1
Debes poner un espacio después de los corchetes [[
.
if [[ $# == $year $month $day ]] ; then
cal $day $month $year
fi
Además, como lo tienes escrito, eso no funcionará. Tienes comparar $#
y $year $month $day
como una cadena, o algo completamente distinto. Tal vez:
if [[ "$#" == "$year$month$day" ]] ; then
cal $day $month $year
fi
Respuesta2
Hay bastantes problemas con esto.
Necesitas un espacio después de
[[
:[[ $# == $year $month $day ]]
$#
no es lo que crees que es. Es el número de argumentos pasados a un script o función. Parece que crees que en realidad es la lista de argumentos.==
compara cadenas, le estás dando una lista de tipos. Para comparar la lista de argumentos pasados a su script con$day
$month
$year
, haría algo como esto:[[ "$@" == "$day $month $year" ]]
. Mical
no funciona de esa maneracal
no funciona de esa manera peroaparentementealgunas versiones más nuevas lo hacen. No tengo idea de lo que estás intentando hacer realmente, pero no funcionará. ¿Quizás estás buscandodate -d "$day/$month/$year"
? Por ejemplo$ date -d "08/10/2014" Sun Aug 10 00:00:00 CEST 2014
O, si quieres mostrar el calendario de un mes específico:
$ cal 10 2014 October 2014 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31