set -A 명령이 Linux에서 작동하지 않습니다.

set -A 명령이 Linux에서 작동하지 않습니다.
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이며 , 그 파생물 및 에서도 지원됩니다 .kshksh88ksh93pdkshzsh

다른 배열 구문으로 전환할 수 있으며 및 둘 다 ksh지원됩니다 bash.

set -f # turn off globbing
days=( $(cal "$month" "$year") )

또는 사용스테판 샤젤라스가 왔습니다.

관련 정보