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") )

または使用ステファン・シャジェラスが来ました

関連情報