首页 > 系统相关 >获取shell脚本所在目录

获取shell脚本所在目录

时间:2022-11-10 23:41:26浏览次数:64  
标签:脚本 shell symlink cd SOURCE pwd && dirname 目录


前几天写的​​七牛​​​的参赛demo,用bash写了一个便捷安装的脚本,涉及到了路径相关的判断,从​​stackoverflow​​,加上自己的实践整理一下。

简单版

下面是一个最简单的实现,可以解决大多数问题,缺陷是对于软链接显示的是软链接所在的目录


lineos:false

#!/bin/bash
DIR="$( cd "$( dirname "$0" )" && pwd )"

完善版

这个版本解决了使用​​ln -s target linkName​​创造软链接无法正确取到真实脚本的问题。


lineos:false

#!/bin/bash
SOURCE="$0"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"


标签:脚本,shell,symlink,cd,SOURCE,pwd,&&,dirname,目录
From: https://blog.51cto.com/u_3987305/5842323

相关文章

  • 校园网自动重连脚本实现
    各位同学是否有在打游戏时被校园网的突然断网而困扰!!!咱们直接,开整开整!!!   创建AutoConect.ps1文件,先创建文本文件,然后改名就行while(1){setstr=$(ping-n3-w......
  • 25、递归搜索目录找出最大的文件
    题目:  在变量名serach_dir中,随意添加一个文件路径,找出所有文件下最大的文件。思路:  1、输入文件路径。  2、递归遍历该文件路径下所有子目录。  3、遍历子目......
  • golang操作文件或者目录
    使用golang操作文件和目录Go&Rust......
  • 一些快速提高Android开发的脚本与技巧(终端篇)
    正所谓“工欲善其事必先利其器”,一个好的工具或者技巧能让提升工作效率,起到事半功倍的效果。在这里斗胆列出一些窃以为一些可能快速提高Android日常开发的脚本,希望可以为大......
  • C++ 获取目录下所有文件的文件名
    vector<string>getFiles(stringcate_dir){vector<string>files;//存放文件名#ifdefWIN32_finddata_tfile;longlf;//输入文件夹路径if......
  • shell脚本 查找出所有包含某关键词的文件名称,并输出第一个
    代码如下:#!/bin/basha=(`grep-r-l“thm_core”src/meta/connectivity`)echo${a[0]}#a是数组变量,需要注意的是“=”与“()”之间不能有空格#grep-r-l查找出在src/......
  • 操作系统实验:Shell脚本编程与Vim编辑器
    SHANGHAIUNIVERSITY操作系统(一)实验报告组号第4组学号姓名20120889实验序号实验六日期2022年9月10日一、实验目的与要求实验目的:掌握v......
  • linux 新建用户并只给目录的只读权限
    一、创建用户第一种方式:创建用户:addusername创建密码:passwdname(回车后出现修改密码的提示)该方式创建的用户目录默认在home下。第二种方式:useradd-d/usr/disp-......
  • Shell 脚本一直提示找不到文件或文件夹
    编写shell脚本,在外部命令行执行命令没有问题,放到脚本中后,在执行的过程中却一直提示找不到文件打开test.sh脚本vitest.sh查看脚本文件格式在命令模式下输入:setff......
  • shell中算术运算加减
    在shell脚本中,所有的变量默认都是字符串存储,操作也是按照字符串进行处理的,但我们不可避免的需要对各中数值进行算术运算,如算术的相加减,那么这时怎么处理呢?在shell脚本中,我......