# resolve links - $0 may be a softlink
PRG="$0" <--- 执行程序名
# 以下循环判断可执行文件是否是一个符号连接(symbolic link,也叫软连接),如果是符号连接,找到实际指向的文件位置
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`/"$link"
fi
done
# 此时,$PRG 指向实际的文件
PRGDIR=`dirname "$PRG"`
EXECUTABLE=catalina.sh
# Check that target executable exists
# 判断这个实际的目标文件是否存在且是可执行文件
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
echo "Cannot find $PRGDIR/$EXECUTABLE"
echo "This file is needed to run this program"
exit 1
fi
# 执行目标文件
exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
这个脚本的目的是解决通过符号连接去执行一个程序的问题。如果是符号连接,需要找到实际指向的目标文件,然后再执行它的 stop 命令。