Estou escrevendo isso no meu script. Tem outras partes, mas estou ficando preso apenas nesta parte.
if [[$# == $year $month $day ]] ; then
cal $day $month $year
fi
Quando eu executo isso, me dá esta mensagem:
[[3: command not found
Então qual é o problema? é uma sintaxe ou um comando real?
Aqui está o resto do meu script, se isso ajudar:
year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)
if [[$# == $year $month $day ]] ; then
cal $day $month $year
fi
Responder1
Você precisa colocar um espaço após os colchetes, [[
.
if [[ $# == $year $month $day ]] ; then
cal $day $month $year
fi
Além disso, como você escreveu, isso não funcionará. Você compare $#
e $year $month $day
como uma string, ou algo totalmente diferente. Talvez:
if [[ "$#" == "$year$month$day" ]] ; then
cal $day $month $year
fi
Responder2
Existem alguns problemas com isso.
Você precisa de um espaço após
[[
:[[ $# == $year $month $day ]]
$#
não é o que você pensa que é. É o número de argumentos passados para um script ou função. Parece que você acha que é na verdade a lista de argumentos.==
compara strings, você está fornecendo uma lista de tipos. Para comparar a lista de argumentos passados ao seu script com$day
$month
$year
, você faria algo assim:[[ "$@" == "$day $month $year" ]]
. O meucal
não funciona assimcal
não funciona assim, masaparentementealgumas versões mais recentes sim. Não tenho ideia do que você está realmente tentando fazer, mas não funcionará. Você está procurandodate -d "$day/$month/$year"
? Por exemplo$ date -d "08/10/2014" Sun Aug 10 00:00:00 CEST 2014
Ou, se quiser mostrar o calendário de um mês 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