==========运行测试结果==========
--------------------------相对调用--------------
root@chrd-mail:/var/www/edm/home# ./../ssh/assay.sh ":qid_333333@d.com>"
line have email user name : qid_333333
letter DBid = 333333
sh path : /var/www/edm/home/../ssh/assay.sh
file no exist
add log [/var/www/edm/home/../ssh/log/333333] exit
-------------绝对中的相对-----------------
root@chrd-mail:/var/www/edm/home# /var/www/edm/home/../ssh/assay.sh ":qid_333333@d.com>"
line have email user name : qid_333333
letter DBid = 333333
sh path : /var/www/edm/home/../ssh/assay.sh
file exist
add log [/var/www/edm/home/../ssh/log/333333] exit
------------------绝对调用---------------
root@chrd-mail:/var/www/edm/home# /var/www/edm/ssh/assay.sh ":qid_333333@d.com>"
line have email user name : qid_333333
letter DBid = 333333
sh path : /var/www/edm/ssh/assay.sh
file exist
add log [/var/www/edm/ssh/log/333333] exit
================sh代码=========
#主要从二个方面考虑,使用绝对路径调用sh时,直接返回参数0就ok了.
#如果是使用相对路径,需要把相对路径中的./删除拼接上当前的工作目录即可.本来我还想实现一个/..就移除对应的目录的,但是算了这事还是交给系统处理.反正系统支持像/var/www/edm/home/../sh.sh,其实它就是/var/www/edm/sh.sh,系统会自动转换的.就不用自己再处理了.
getShPath () {
if [ "`expr \"$0\" : '\(.\)'`" == "/" ];then #like /var/www/sh.sh
echo "$0"
return 0;
fi
if [ "`expr \"$0\" : '\(.\)'`" == "." ];then #like ./sh.sh or ./../../sh.sh
local newDir=${0#'./'}
echo "`pwd`/$newDir"
return 0;
fi
echo "$0" #unkown type
return 0
}
logPath=`getShPath` #得到完整路径
echo "sh path : $logPath"
logPath=`dirname $logPath` #得到目录路径,去除文件名,只解析,并不做存在性检测
logPath="$logPath/log" #拼接其它目录名
echo "$logPath"