나는 이것을 내 대본에 쓰고 있습니다. 다른 부분도 있는데 이 부분에서만 막히네요.
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