LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1330|回复: 8

[求助]:那位可以帮我改改shell这个脚本

[复制链接]
发表于 2003-2-18 11:21:44 | 显示全部楼层 |阅读模式
我下了linux版的proe,好像脚本不能运行?那位大哥帮我改改这个脚本,使它能正常运行,谢了!!!!!!!!
#!/bin/sh -f
#=============================================================
# MODIFICATIONS
# ---------------------------------------------------------
# 06-Oct-97 $$1  JJE  Created.
# 28-Oct-97 $$2  JJE  Use -dirs
# 05-Dec-97 $$3  JJE  Remove -vrdirs, set LC_NUMERIC to C
# 22-Dec-97 $$4  JJE  Check DISPLAY
# 05-Jan-98 $$5  JJE  ignore
# 13-Jan-98 $$6  JJE  Use delta lib
# 22-Jan-98 $$7  JJE  Add . to path on sgi
# 23-Jan-98 $$8  JJE  Add startup messages
# 27-Jan-98 $$9  JJE  Add cr
# 31-Jan-98 $$10 JJE  Don't echo argv
# 23-Feb-98 $$11 ZRL  Added remote install
# 06-Apr-98 $$12 JJE  Add sgi_mips4
# 22-Jun-98 $$13 ZRL  removed galaxy library
# 29-Jun-98 ##14 ZRL  use galaxy library only on sgi_elf2
# 11-Aug-98 $$14 JJE  Fix remote install for mips4
# 22-Oct-98 $$15 TWH  Fixed remote install
# 11-Nov-98      TWH  Fixed cleanup
# 20-Nov-98 $$16 TWH  Fixed Trusted login check for Sun
# 08-Sep-99 $$17 JJE  Migrate to new installer
# 20-Oct-99 $$18 MYA  Add DPS_DIRECTORY
# 07-Aug-00      TWH  Check if hpux11_pa32 exists
# 22-Aug-00 $$19 TWH  rewritten to /bin/sh for multicd
# 18-Sep-00 $$20 TWH  support non \c echo; -multicd iff using redirect
# 09-Oct-00 $$21 TWH  Fix command-line args; fix PROSETUP_EXE bug
# 31-Oct-00 $$22 TWH  Fix for $0 == "setup"
# 17-Jan-01 $$23 TWH  always run sun4_solaris instead of _64 this script
# 16-May-01 $$24 TWH  always run hpux11_pa32 instead of hpux_pa64
# 13-Jun-02 $$25 JJE  Support -64 arg
# 16-Jul-02 $$26 TWH  Set TMP & TEMP if not set
# 20-Aug-02 $$27 TWH  Fix #26
# 26-Aug-02 $$28 TWH  Another fix for #26
#=============================================================

rundir=`pwd`
fullscrname=$0
# :t
scrname=`echo $fullscrname | awk -F"/" '{ print $NF}'`
# :h
fullscrpath=`echo $fullscrname | awk -F"/" '{ ORS="/"} { n=split($0,A)} { for (i = 1; i < n; i++) print A }'`
if [ "$fullscrpath" = "" ]
then
  fullscrpath=$0
else
  fullscrpath=`echo $fullscrpath | awk '{ n=length($0)} { n -= 1} { print substr($0,1,n)}'`
fi

if [ "$fullscrpath" = "$fullscrname" ]
then
  fullscrpath=`pwd`
else
  cd $fullscrpath
  fullscrpath=`pwd`
fi

echostr=`echo "test \c"`
if [ "$echostr" = "test \c" ]
then
  alt_echo=true
fi

bit_mode_64=false
other_args=""
i=1
while [ "$i" -le $# ]
do
  if [ "$1" = "-display" ]
  then
    shift
    echo "setting DISPLAY to: $1"
    DISPLAY="$1"
    export DISPLAY
    shift
  elif [ "$1" = "?" -o "$1" = "-h" -o "$1" = "-help" ]
  then
    echo ""
    echo "Usage: $scrname [ -display unix:0 ]"
    exit 0
  elif [ "$1" = "-remote" ]
  then
    echo ""
    echo "Sorry, remote installation is not supported in this release."
    exit 1
  elif [ "$1" = "-cdrom" ]
  then
    shift
    echo "setting CDROM path to: $1"
    fullscrpath="$1"
    shift
  elif [ "$1" = "-64" ]
  then
    shift
    bit_mode_64=true
  else
    other_args="$other_args $1"
    shift
  fi
done

cd $rundir
prodir=$fullscrpath
imagedir=$fullscrpath
getpmtscr="getpmt.csh"

if [ ! -x "$imagedir/$getpmtscr" ]
then
  echo ""
  echo "ERROR:  $imagedir/$getpmtscr - file is missing."
  echo "        Check the name of the CD mount directory."
  exit 1
fi

mctype=`$imagedir/$getpmtscr`
if [ "$mctype" = "UNKNOWN" ]
then
  echo ""
  echo "ERROR:  OS name unknown."
  exit 1
fi

test "$TMP"
if [ $? != 0 ]
then
  if [ -x "/tmp" ]
  then
  TMP="/tmp"
  export TMP
  elif [ -x "/var/tmp" ]
  then
  TMP="/var/tmp"
  export TMP
  fi
fi
test "$TEMP"
if [ $? != 0 ]
then
  if [ -x "/tmp" ]
  then
  TEMP="/tmp"
  export TEMP
  elif [ -x "/var/tmp" ]
  then
  TEMP="/var/tmp"
  export TEMP
  fi
fi
test "$DISPLAY"
if [ $? != 0 ]
then
  echo ""
  echo 'ERROR:  The DISPLAY variable is not set - '
  echo ""
  echo "   Options:"
  echo "      o Press <cr> to set DISPLAY to `hostname`:0.0"
  echo "      o Type a value to use for the DISPLAY variable"
  echo "      o Enter 'q' to abort prosetup"
  echo "      o Specify '-display <host>:0' on the command line"
  echo ""
  test "$alt_echo"
  if [ $? = 0 ]
  then
    echo -n "Set it to (`hostname`:0.0): [q to abort] "
  else
    echo "Set it to (`hostname`:0.0): [q to abort] \c"
  fi
  read line
  if [ "$line" = "q*" -o "$line" = "Q*" ]
  then
    exit -1
  elif [ "$line" = "" ]
  then
    DISPLAY="`hostname`:0.0"
    export DISPLAY
  else
    DISPLAY="$line"
    export DISPLAY
  fi
  echo ""
  echo "   DISPLAY has been set to: $DISPLAY"
  echo ""
fi

echo ""
test "$alt_echo"
if [ $? = 0 ]
then
  echo -n "Starting PTC.Setup, please wait ..."
else
  echo "Starting PTC.Setup, please wait ...\c"
fi

if [ "$mctype" = "sun4_solaris_64" -a "$bit_mode_64" = "false" ]
then
  mctype="sun4_solaris"
fi
if [ "$mctype" = "sun4_solaris" ]
then
  PATH=$PATH:/usr/ucb
  export PATH
fi

if [ "$mctype" = "sgi_elf2" -o "$mctype" = "sgi_mips4" ]
then
  PATH=.PATH
  export PATH
fi
if [ "$mctype" = "hpux_pa64" -a "$bit_mode_64" = "false" ]
then
  mctype="hpux11_pa32"
fi
if [ "$mctype" = "hpux11_pa32" ]
then
  if [ ! -d "$imagedir/dsrc/$mctype" ]
  then
    mctype="hp8k"
  fi
fi

PTC_CDHOME=$imagedir
export PTC_CDHOME
PS_DIRECTORY=$imagedir/dsrc
export PS_DIRECTORY
DPS_DIRECTORY=$imagedir/dsrc
export DPS_DIRECTORY
PRO_MACHINE_TYPE=$mctype
export PRO_MACHINE_TYPE
LC_NUMERIC=C
export LC_NUMERIC

test "$PROSETUP_EXE"
if [ $? != 0 ]
then
  PROSETUP_EXE="$imagedir/dsrc/$mctype/obj/ptcsetup"
elif [ -x "$PROSETUP_EXE" ]
then
  echo ""
  test "$alt_echo"
  if [ $? = 0 ]
  then
    echo -n "Using $PROSETUP_EXE ..."
  else
    echo "Using $PROSETUP_EXE ...\c"
  fi
  ($PROSETUP_EXE $other_args ) &
  exit 0
fi

if [ ! -x "$PROSETUP_EXE" ]
then
  echo ""
  echo "ERROR:  $PROSETUP_EXE - file is missing."
  echo "        Check the name of the CD mount directory."
  exit 1
fi

REDIRECT_EXE="$imagedir/dsrc/$mctype/obj/redirect"
if [ -x "$REDIRECT_EXE" ]
then
  ($REDIRECT_EXE $other_args -multicd ) &
else
  ($PROSETUP_EXE $other_args ) &
fi

echo ""
exit 0
发表于 2003-2-18 11:45:27 | 显示全部楼层
本身shell是可以运行的,但我们缺一些别的文件。
你把你报的错误贴上来吧。让大家看看是什么原因导致的。
 楼主| 发表于 2003-2-18 13:31:07 | 显示全部楼层
[fang@awxs cdrom]$ ./setup
: invalid option
Usage:  /bin/sh [GNU long option] [option] ...
        /bin/sh [GNU long option] [option] script-file ...
GNU long options:
        --debug
        --dump-po-strings
        --dump-strings
        --help
        --init-file
        --login
        --noediting
        --noprofile
        --norc
        --posix
        --rcfile
        --rpm-requires
        --restricted
        --verbose
        --version
        --wordexp
Shell options:
        -irsD or -c command or -O shopt_option          (invocation only)
        -abefhkmnptuvxBCHP or -o option
 楼主| 发表于 2003-2-18 13:38:52 | 显示全部楼层
如果把开头那里#/bin/sh改了
就可以运行,但还是装不上
发表于 2003-2-18 15:10:28 | 显示全部楼层
#!/bin/sh表示用shell来解释里面的命令,所以是必须的。
可以运行后为什么装不上呢?那时候的错误是什么?

不过如果不是shell本身的错误,而是软件的逻辑错误,就不是我可以帮你解决的了
发表于 2003-2-18 15:56:21 | 显示全部楼层
是不是可以用带参数的-n检查脚本中的语法错误
如:
$sh -n scriptname
或者用-vx进行脚本调试?
如:在scriptname中头一行加入
#!/bin/sh -vx
如果逻辑错误或者脚本对安装环境有特殊要求,那要仔细看看安装包的说明啦.
 楼主| 发表于 2003-2-18 20:51:18 | 显示全部楼层
[fang@awxs cdrom]$ sh -n setup
setup: line 77: syntax error near unexpected token `elif'
'etup: line 77: `  elif [ "$1" = "?" -o "$1" = "-h" -o "$1" = "-help" ]
[fang@awxs cdrom]$
出现这样的错误
 楼主| 发表于 2003-2-18 20:55:38 | 显示全部楼层
还有就是把/bin/sh改为/bin/bash的话就可以运行
不过还是装不了;(
 楼主| 发表于 2003-2-19 12:11:42 | 显示全部楼层
顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表