本文将分析以下两种常见的 Shell 脚本获取当前脚本目录路径的代码,并解释其工作原理:

  1. CURRENT_DIR="$(cd "$(dirname "$0"") && pwd)"

  2. CURRENT_DIR=$(cd $(dirname $0); pwd)

这两段代码的作用都是获取当前脚本所在目录的路径,并将结果赋值给变量 CURRENT_DIR。第二种写法使用了更简洁的语法,但两种写法都是正确的。

代码解析:

  1. CURRENT_DIR="$(cd "$(dirname "$0"") && pwd)"

    • $0:表示当前执行的脚本文件名。
    • dirname "$0":获取脚本文件所在目录的路径。
    • "$(dirname "$0""):将 dirname "$0" 的结果用双引号括起来,以确保路径中的空格不会被误解。
    • cd "$(dirname "$0""):将当前目录切换到脚本文件所在目录。
    • && pwd:执行完 cd 命令后,使用 pwd 命令获取当前目录的绝对路径。
    • "$(cd "$(dirname "$0"") && pwd)":整个命令的执行结果被用双引号括起来,并赋值给变量 CURRENT_DIR
  2. CURRENT_DIR=$(cd $(dirname $0); pwd)

    • $(dirname $0):获取脚本文件所在目录的路径。
    • cd $(dirname $0):将当前目录切换到脚本文件所在目录。
    • ; pwd:在 cd 命令执行完成后,执行 pwd 命令获取当前目录的绝对路径。
    • $(cd $(dirname $0); pwd):整个命令的执行结果被赋值给变量 CURRENT_DIR

总结:

两种写法都能够正确地获取脚本所在目录的路径,但第二种写法更加简洁。选择哪种写法取决于个人习惯和代码风格。

Shell 脚本获取当前脚本目录的两种方法

原文地址: https://www.cveoy.top/t/topic/mV0U 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录