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 

当路径中含有小数点时,该方法会有问题。修正方法为加入一个判断

 代码如下 复制代码

#!/bin/sh
path=$(dirname $0)
if [ ${path:0:1} == . ]
then
path=${path/./$(pwd)}
fi

时间: 2024-07-29 08:42:56

linux中Shell脚本所在目录的绝对路径的相关文章

应用-Linux中shell脚本问题

问题描述 Linux中shell脚本问题 ]我有shell脚本,放在/bin/目录下,内容如下: #!/bin/sh cd /usr /sbin/insmod s3c_ts.ko ./digitpic ./MSYH.TTF & 当我开发板上电以后我手动执行手动执行test.sh 我的digitpic应用程序能够正常启动 当我在/etc/init.d/rcS 文本里面最后添加exec test.sh 提示说这个触摸屏读取错误,也就是/sbin/insmod s3c_ts.ko这部分错误了,就只有触

linux中shell脚本实现下载完关机_linux shell

用mint 有一段时间了,下载基本用firefox,有时下载几个G的游戏.可是firefox没有找到下载完关机的选择.处于这个原因,写了这个. download_shutdown.sh #!/bin/bash # Created By: Demo <demo@demo.com> # Created Time: 2015-01-30 12:36:44 # Modified Time: 2015-01-30 12:54:21 dir=$1 while [ "1" ] do if

Shell中获取脚本所在目录绝对路径的方法_linux shell

要得到正在执行的程序/脚本自身所存放的绝对路径,在 PHP 里面可以用 dirname(realpath(__FILE__)) : C# 则有 System.Windows.Forms.Application.StartupPath : java 似乎没有什么比较直接的方法,只能利用 CodeSource 来间接获取 .而在 linux shell 脚本里面如果想得到当前脚本文件存放的绝对路径,也没有太现成的命令可以调用,不过可以通过下面的语句来获取: 复制代码 代码如下: baseDirFor

linux中shell脚本导出备份mysql数据库

最近公司有个需求需要从mysql数据库中查询状态为60的数据并导出. 实例代码如下: #!/bin/bash   dir="/cache1" ##要存到导出数据的目录名 open="open" ##导出数据的文件名称 open_dir="${open}.$(date +%Y%m%d)" ##导出数据的文件名称,按日期区分 db="/opt/trustedm/mysql/current/bin/mysql -uroot -pmv_XQ_m

linux中shell脚本进行MySQL数据库定时备份

具体方法  代码如下 复制代码 #!/bin/bash #Shell Command For Backup MySQL Database Everyday Automatically By Crontab #Author : Carlos Wong #Date : 2010-08-24 #配置参数  代码如下 复制代码 USER=root #数据库用户名" >用户名 PASSWORD=××××× #数据库用户密码 DATABASE=TIENIUZAI    #数据库名称 WEBMASTER

linux中shell脚本之变量类型、算数运算符、条件测试

一.bash中的变量类型 本地变量:仅对当前shell有效,对其子shell无效 变量赋值:name=value name=$user name=`Command` ,name=$(Command):这里需要注意的是" 和 $()的意义是不同的. 从下图可以总结如下:如果将命令的执行结果赋值给一个参数时,且包含多对反引号嵌套的时候,最好外层用$() #!/bin/bash # Sum=$(echo `seq $1 $2` | tr " " "+" | bc

linux中shell脚本监控网站80端口与网站是否正常

监控网站80端口 很多时候我们不知道网站80端口是否正常,当然我以前的shell监控网站状态(续)这篇文章也可以监控网站,这里只是给大家提供另外一个思路去监控网站. 脚本内容:  代码如下 复制代码 vi check-80.sh #!/bin/bash nmap -P0 -p80 -sS -vv blog.slogra.com|grep 80 |tail -n1>/tmp/nmap.txt check_80=`cat /tmp/nmap.txt|awk '{print $2}'` if [ &quo

linux中SHELL脚本中的数组用法

在Shell中(我这里是Bash),其实没有传统意义上的"数据类型",把任何变量中存的值都是作为字符组成的"字符串".当然,通过declare可以声明某个变量是整型.数组等类型.其中,数组就是本文要专门讲的了.在Bash中,仅支持一维数组,当然通过关联数组(associative array)的形式可以模拟多维数组. 1. 数组的声明 用 declare -a array 声明array是一个数组,用declare -A a_array 声明a_array是一个关联

linux中shell脚本数组的操作教程

数组赋值:a=(1 2 3 4 5) a[1]=1 数组长度:echo ${#a[@]} 或者 echo ${#a[*]} 读取数组:echo ${a[@]} 或者 echo ${a[*]} echo ${a[0]}                             PS: 数组下标从0开始 删除数组:unset a unset a[1] 数组分片:echo ${a[@]:0:3}                  显示为1,2,3                ps:截取前3个数组值显示