我正在我的劇本中寫這個。它還有其他部分,但我只卡在這部分。
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