Linux/Unix:shell脚本如何查出脚本文件所在的目录
August 19, 2013
在脚本开发中,我们有时候需要获取脚本文件所在的目录,这样就可以读去脚本所在目录的其它文件。例如,如果脚本位于“/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