linux shell 脚本里面如果想得到当前脚本文件存放的绝对路径,也没有太现成的命令可以调用,不过可以通过下面的语句来获取:代码如下复制代码
baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
echo "full path to currently executed script. is : ${baseDirForScriptSelf}"
或者
FULLPATH=$(cd "$(dirname "$0")"; pwd)
echo "full path to currently executed script. is : ${FULLPATH}"
BASEDIR=`dirname $FULLPATH`
echo "parent dir is $BASEDIR"
这个功能很给力 直接得到绝对路径 把脚本整个目录及上级目录全部挪窝的好东西
方法二代码如下复制代码
#!/bin/sh
name=$0
echo "name : $name"
dir=$(dirname ${name})
echo "dir: $dir"
path=$(pwd)
echo "path : $path"
path=${dir/./${path}}
echo "path : $path"
实例
Shell代码代码如下复制代码#!/bin/sh
this_dir=`pwd`
dirname $0|grep "^/" >/dev/null
if [ $? -eq 0 ];then
this_dir=`dirname $0`
else
dirname $0|grep "^." >/dev/null
retval=$?
if [ $retval -eq 0 ];then
this_dir=`dirname $0|sed "s#^.#$this_dir#"`
else
this_dir=`dirname $0|sed "s#^#$this_dir/#"`
fi
fi
echo $this_dir
当路径中含有小数点时,该方法会有问题,linux中Shell脚本所在目录的绝对路径linux操作系统》()。修正方法为加入一个判断代码如下复制代码
#!/bin/sh
path=$(dirname $0)
if [ ${path:0:1} == . ]
then
path=${path/./$(pwd)}
fi