Skip to content Skip to main navigation Skip to footer

Linux/Unix:shell脚本如何查出脚本文件所在的目录

在脚本开发中,我们有时候需要获取脚本文件所在的目录,这样就可以读去脚本所在目录的其它文件。例如,如果脚本位于“/home/test/sch1.sh”,我想读取
“/home/test”目录下的其它文件。那么如何才能知道该脚本所在的目录的路径和shell 脚本的目录位置呢?
你可以通过下面的方法来获取路径名的部分信息:
1.basename 命令 –显示路径名的文件名部分
2.dirname 命令–显示路径的目录部分
3. bash参数替换
4. $0替换脚本名
示例:下面的例子显示目录的路径

dirname /root/test.sh/ 

命令输出:

/root 

下面的行设置shell 变量t的值为”/root/cn/test/scr”:

t=`dirname /root/cn/test/scr/test.sh"
echo "$t" 

OR

t=$(dirname /root/cn/test/scr/test.sh)
echo "$t" 

使用$0来替换“/root/cn/test/scr/test.sh”

#!/bin/bash
scriptname="$0"
basename=$(dirname  $scriptname)
echo "脚本 $scriptname在目录 $basename里." 

命令输出:

脚本 /root/cn/test/scr/test.sh在目录/root/cn/test/scr里. 

使用bash shell变量替换参数 ${var%pattern}

var=${path%/*} 

示例:

x="/root/cn/test/scr/test.sh"
echo "${x%/*}"
y="${x%/*}"
echo "$y" 
0 Comments

There are no comments yet

Leave a comment

Your email address will not be published.