在bin下面有9个sh文件,本文将逐步分析,今天就以version.sh为例
os400=
false
#uname取操作系统名称 如Linux 如果为OS400的操作系统 特殊处理
case
"
`uname`
"
in
OS400
*) os400=
true
;;
esac
# resolve links
- $
0
may be a softlink
# 解析文件或者符号文件 得到真正文件
#
/home/dragonsuc/bin/version.
sh
#
/home/dragonsuc/bin/tm ->/home/dragonsuc/bin/version.
sh
#当以符号连接启动时 找到真正文件
/home/dragonsuc/bin/version.
sh
#取得当前执行文件名称
PRG
=
"
$0
"
#判断文件是否是符号文件 文件存在并且是符号文件
while
[ -h
"
$PRG
"
] ;
do
# lr 。。。。
/home/dragonsuc/bin/tm ->/home/dragonsuc/bin/version.
sh
ls
=`
ls
-
ld
"
$PRG
"
`
# 注意下面两行中expr精妙用法
# 得到
/home/dragonsuc/bin/version.
sh
link
=`
expr
"
$ls
"
:
'
.*-> \(.*\)$
'
`
if
expr
"
$link
"
:
'
/.*
'
> /dev/
null
;
then
PRG
=
"
$link
"
else
PRG
=`
dirname
"
$PRG
"
`/
"
$link
"
fi
done
#得到目录路径
/home/dragonsuc/
bin
PRGDIR
=`
dirname
"
$PRG
"
`
EXECUTABLE
=catalina.
sh
# Check that target executable exists
if
$os400;
then
#
-x will Only work on the os400
if
the files are:
#
1
. owned by the user
#
2
. owned by the PRIMARY group of the user
# this will not work
if
the user belongs
in
secondary
groups
eval
else
#测试文件的可执行权限
if
[ ! -x
"
$PRGDIR
"
/
"
$EXECUTABLE
"
];
then
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
fi
# 执行文件 $@是传递执行的参数
exec
"
$PRGDIR
"
/
"
$EXECUTABLE
"
version
"
$@
"

