나는 이것을 내 대본에 쓰고 있습니다. 다른 부분도 있는데 저는 이 부분만 짚고 넘어가겠습니다.
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