让我们一起来欣赏一下tomcat的启动脚本是怎么写的,重点关注一下其中的shell技巧
#!/bin/sh #将用sh shell执行 PRG="$0" #当前命令,即startup.sh while [ -h "$PRG" ] ; do #-h同-L,用于判断文件是否是符号连接;这段代码用于找到连接背后的真实文件;由于连接的target本身可能也是个连接,所以这里用while循环找出终极连接指向的真实文件 ls=`ls -ld "$PRG"` #为了找出本连接的target,需要执行一下ls命令;这里暂时先把ls命令的输出赋给$ls变量 link=`expr "$ls" : '.*-> \(.*\)$'` #通过expr的模式匹配功能,找出$ls中的target部分,并赋给$link变量 if expr "$link" : '/.*' > /dev/null; then #判断$link是否以"/"开头,如果是,则它就是一个完整的路径;这里的> /dev/null是为了使expr的输出不打印在屏幕上 PRG="$link" else PRG=`dirname "$PRG"`/"$link" #如果$link没有以"/"开头,那它就是一个相对路径;也就是说target的完整路径 = 符号连接的目录/相对路径 fi done PRGDIR=`dirname "$PRG"` #得出真实命令文件所处的目录 EXECUTABLE=catalina.sh if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then #判断一下catalina.sh是否存在且可执行 echo "Cannot find $PRGDIR/$EXECUTABLE" echo "The file is absent or does not have execute permission" echo "This file is needed to run this program" exit 1 fi exec "$PRGDIR"/"$EXECUTABLE" jpda run "$@" #执行catalina.sh, 提供的参数包括jpda, run 和startup.sh 收到的参数