安装shell脚本时算术语法错误

安装shell脚本时算术语法错误

当我尝试安装一个 shell 脚本形式的软件许可证服务器时,出现错误并且真的不知道出路。我在脚本中找不到任何错误。希望有人能给我一些帮助在此输入图像描述

#!/bin/ksh
#----------------------------------------------------------------------------
#                                            COPYRIGHT DASSAULT SYSTEMES 2009
#----------------------------------------------------------------------------
# CREATED : 2009/07/06
#----------------------------------------------------------------------------

# Set variables
OSDS=aix_a64
export OSDS

VERSION=`uname -v`
RELEASE=`uname -r`
echo AIX $VERSION.$RELEASE
RC=0

if [[ $VERSION -lt 7 ]] ; then

  #----------------------------
   # Must be in AIX V7.1.2 or higher
   #----------------------------
   echo AIX 7.1 TL2 is the minimum required level >&2
   RC=1
else
  #-------------------------------------------------------------
  # 7.1 TL2 (libc 7.1.2.0) is the minimum required level of AIX
  #-------------------------------------------------------------
  A=`lslpp -Lqc bos.rte.libc |\
    awk -F: '{ print "bos.rte.libc",$3
               split($3,a,"[.]")
               if      (a[1]<7 )                                  exit 1
               else if (a[1]==7 && a[2]<1)                        exit 1
               else if (a[1]==7 && a[2]==1 && a[3] < 2)           exit 1 }' `
  if [[ $? -ne 0 ]] ; then
    echo  AIX 7.1 TL2 is the minimum required level >&2
    RC=1
  fi
fi

if [[ $RC = 0 ]] ; then
  echo Check Prerequisites for AIX OK
else
  echo >&2
  echo ERROR : Check Prerequisites for AIX KO >&2
  echo >&2
  exit $RC
fi


CURPWD=`pwd` || exit 1
[[ $0 = /* ]] && STARTDIR=$0 || STARTDIR=`echo $CURPWD/$0 | sed 's%/\./%/%g'`
START=${STARTDIR##*/}
STARTDIR=${STARTDIR%/*}
export STARTDIR
echo $STARTDIR

for i in $*
do
   if [[ $i = -h ]] 
    then 
      HELP=TRUE
  fi
done

if [[ $HELP = TRUE ]]
then
    # Help
    ${STARTDIR}/DSYLicServINSTB -h

else
  # Check root, and perform su if necessary
  #----------------------------------------
  if [[ `PATH=$PATH:/usr/ucb whoami` = root ]] ; then
    :
  else
     pbsu=$(eval echo \$$#)
     if [[ $pbsu = pbsu ]] ; then
      echo "Problem when trying to become super-user (root)"
      echo "Please try to become super-user by running following commands:"
      echo "       login root"
      echo "       cd /"
      echo "       $STARTDIR/$START $*"
      echo
      exit 1
     fi
     echo "Log on as super-user (root) before installing"
     echo
     su - root -c "$STARTDIR/$START $* pbsu"
     exit $?
  fi

  #Installation
  [[ -z $DISPLAY ]] && export DISPLAY=`uname -n`:0
  ${STARTDIR}/DSYLicServINSTB $*

fi

答案1

这是一个 shell 脚本安装专门为 AIX 编写的许可证服务器(它本身不是许可证服务器)(如脚本本身所述)。

Ubuntu 上的命令uname -v输出一个文本字符串,例如(在我的 Ubuntu VM 上):

#39-Ubuntu SMP Thu Jan 26 02:27:07 UTC 2017

在 AIX 上,它显然输出了一个可用于第 17 行算术比较的数字:

VERSION=`uname -v`
# ...
if [[ $VERSION -lt 7 ]] ; then

即使您修改了该脚本,您也将无法在 Ubuntu 上运行该脚本。

如果我是您,我会寻找许可证服务器的 Linux 安装说明。如果是Abaqus FLEXnet,那么我认为RedHat/SuSE是支持的。还可以在 Google 上搜索“Abaqus FLEXnet Ubuntu”,看看是否有任何有用的信息。

相关内容