if [ $UNITS = day ]; then
while ((OFFSET > 0)); do
if (( OFFSET >= day )) ;then
month=$((month - 1))
if (( month == 0 )) ;then
year=$((year - 1))
month=12
fi
set -A days `cal $month $year`
OFFSET=$((OFFSET - day))
day=${days[$(( ${#days[*]}-1 ))]}
else
day=$((day - OFFSET))
OFFSET=0
fi
done
위의 코드 패치는 AIX에서 제대로 작동하지만 Linux에서 동일한 코드를 실행하려고 하면 다음 오류가 발생합니다.
set: -A: invalid option
set: usage: set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]
답변1
이는 Linux에서 기본 사용자 셸이 일반적으로 bash
( 기본 Redhat 배포판에서) 또는 (기본 Debian 및 Ubuntu 배포판에서) /bin/sh
심볼릭 링크되어 있기 때문입니다./bin/bash
/bin/dash
배열 선언은 에서 처음 구현된 구문 set -A
이며 , 그 파생물 및 에서도 지원됩니다 .ksh
ksh88
ksh93
pdksh
zsh
다른 배열 구문으로 전환할 수 있으며 및 둘 다 ksh
지원됩니다 bash
.
set -f # turn off globbing
days=( $(cal "$month" "$year") )
또는 사용스테판 샤젤라스가 왔습니다.