我正在我的剧本中写这个。它还有其他部分,但我只卡在这部分上。
if [[$# == $year $month $day ]] ; then
cal $day $month $year
fi
当我运行它时,它给我这个消息:
[[3: command not found
那么问题出在哪里呢?它是语法还是实际命令?
如果有帮助的话,这是我的脚本的其余部分:
year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)
if [[$# == $year $month $day ]] ; then
cal $day $month $year
fi
答案1
您需要在方括号后添加一个空格,[[
。
if [[ $# == $year $month $day ]] ; then
cal $day $month $year
fi
而且正如你所写的那样,这是行不通的。您将比较$#
和$year $month $day
作为字符串,或者完全是其他东西。也许:
if [[ "$#" == "$year$month$day" ]] ; then
cal $day $month $year
fi
答案2
这方面存在不少问题。
后面需要一个空格
[[
:[[ $# == $year $month $day ]]
$#
不是你想的那样。它是传递给脚本或函数的参数数量。看起来您认为这实际上是参数列表。==
比较字符串,你给它一个排序列表。要将传递给脚本的参数列表与 进行比较$day
$month
$year
,您可以执行以下操作:[[ "$@" == "$day $month $year" ]]
。我的cal
不是这样的cal
不是这样工作的,但是显然一些较新的版本可以。我不知道你实际上想做什么,但它不会起作用。您也许正在寻找date -d "$day/$month/$year"
?例如$ date -d "08/10/2014" Sun Aug 10 00:00:00 CEST 2014
或者,如果您想显示特定月份的日历:
$ 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