IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux shell 切换到脚本所在的目录 | $( dirname “$0“ ) -> 正文阅读

[系统运维]linux shell 切换到脚本所在的目录 | $( dirname “$0“ )

切换到脚本所在的目录

demo:

SCRIPT_PATH="$( cd "$( dirname "$0" )" >/dev/null 2>&1 && pwd )"
cd "$SCRIPT_PATH/.." || exit

在linux中,dirname命令可以返回文件所在的目录。$0表示Shell本身的文件名。
因此此写法的作用为:
这个语句的作用是获取shell脚本所在目录的绝对路径,然后
切换到 脚本 所在的目录。

dirname

dirname的功能是去掉文件路径名中的从右往左数的第一个/及其之后的所有文字,查看dirname的help信息可以看到如下的例子

[root@dev workspace]# dirname --help
Usage: dirname [OPTION] NAME...
Output each NAME with its last non-slash component and trailing slashes
removed; if NAME contains no /'s, output '.' (meaning the current directory).

  -z, --zero     end each output line with NUL, not newline
      --help     display this help and exit
      --version  output version information and exit

Examples:
  dirname /usr/bin/          -> "/usr"
  dirname dir1/str dir2/str  -> "dir1" followed by "dir2"
  dirname stdio.h            -> "."

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation at: <https://www.gnu.org/software/coreutils/dirname>
or available locally via: info '(coreutils) dirname invocation'
[root@dev workspace]#

"."表示当前路径

SCRIPT_PATH="$( cd "$( dirname "$0" )" >/dev/null 2>&1 && pwd )"

结合上面基础,此时$(dirname $0)的结果就是.,那么cd $(dirname $0)就是cd . ,之后运行pwd,此时获得的就是脚本所在的绝对路径了。

$() 和 ${}

  • 在 bash shell 中, ( ) 是 将 括 号 内 命 令 的 执 行 结 果 赋 值 给 变 量 。 用 ()是将括号内命令的执行结果赋值给变量。 用 ()( )的理由:

    • 很容易与’ '(单引号)搞混。有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。
    • 在多层次的复合替换中, 须要额外的跳脱(`)处理,而$( )则比较直观。
      $( )的不足
    • ``基本上可在全部的unix shell中使用,若写成shell script移植性比较高。而$( )并不是每一种shell都能使用。
  • 是 用 来 作 变 量 替 换 。 一 般 情 况 下 , {} 是用来作变量替换。一般情况下, var 与 ${var} 并没有啥不一样。但是用 ${ } 会比较精确的界定变量名称的范围
    示例如下:

[root@dev workspace]# A=B
[root@dev workspace]# echo $AB

[root@dev workspace]# echo ${A}B
BB
[root@dev workspace]#
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 12:16:32  更:2022-05-10 12:17:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:19:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码