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

Bash 脚本 admin 979℃ 0评论

在脚本开发中,我们有时候需要获取脚本文件所在的目录,这样就可以读去脚本所在目录的其它文件。例如,如果脚本位于“/home/test/sch1.sh”,我想读取
“/home/test”目录下的其它文件。那么如何才能知道该脚本所在的目录的路径和shell 脚本的目录位置呢?

你可以通过下面的方法来获取路径名的部分信息:
1.basename 命令 –显示路径名的文件名部分
2.dirname 命令–显示路径的目录部分
3. bash参数替换
4. $0替换脚本名

示例:下面的例子显示目录的路径

1
dirname /root/test.sh/

命令输出:

1
/root

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

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

OR

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

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

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

命令输出:

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

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

1
var=${path%/*}

示例:

1
2
3
4
x="/root/cn/test/scr/test.sh"
echo "${x%/*}"
y="${x%/*}"
echo "$y"

转载请注明:osetc.com » Linux/Unix:shell脚本如何查出脚本文件所在的目录

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址