シェルスクリプトには、メニューを中央に表示していくつかのタスクを実行するツールがあります。スクリプトの実行中にこのエラーが発生します。
\007
In center function
COLUMNS : columns 142
2 : 13
/ShellsAndSQLs/task_menu: line 80:  (columns 142 - 13) / 2 : arithmetic syntax error
このコードは、echo $ COLUMNS(why ??)が空白の値を示すsolaris envからコピーされました。これをRedhatEnvにコピーすると、echo $ COLUMNSが142として表示されます(フルスクリーンで表示されるはずです)。コードの関連セクションは次のとおりです。
#!/bin/ksh 
trap "tput sgr0; tput clear;" 1 2 3 4 5 6 7 8 10 11 12 13 14 15
if [ $# -ne 2 ]
then
    echo "Wrong parameters specified" >&2
    exit 1
fi
if [ "$COLUMNS" = "" ]
then
    echo "column in if"
    stty -a |
    awk -F \; '/columns/ { for (i = 1; i <= NF; i++) {
                               if ($i ~ "columns") {
                                   sub(" *columns *= *", "", $i);
                                   print $i;
                                   exit
                               }
                         }
             }' |
    read COLUMNS
fi
center()
{
 echo "In center function"
 echo "COLUMNS : $COLUMNS"
 echo "2 : ${#2}"
    n=$(( ($COLUMNS - ${#2}) / 2 ))
   #n=`expr $COLUMNS - ${#2} / 2`;
    echo "n is $n";
   echo "COLUMNS in center fun : $COLUMNS" ;
    tput cup $1 $n
    echo $_N $2 $_C
}
COLUMNSが空白ではないため、if条件になっていないことはわかっています。また、COLUMNSはウィンドウのサイズによって異なる場合があります。
n=$(( ($COLUMNS - ${#2}) / 2 ))
仕事?