unix中的bash脚本-返回完整路径和文件名

unix中的bash脚本-返回完整路径和文件名

我想在 unix 中设计 bash 脚本,并且这个 bash 返回完整路径,因为我想在其他地方使用这个文件。

答案1

您是否正在寻找正在运行的脚本的完整路径和文件名?

#!/bin/bash

我的名字=basename $0

如果 [“ echo $0 | cut -c1”=“/”];则

 _my_path=`dirname $0`

别的

 _my_path=`pwd`/`echo $0 | sed -e s/$_my_name//`

echo "文件名:$_my_name"

echo "绝对路径:$_my_path"

echo "完整路径+名称:$0"

答案2

readlink如果你的系统上有以下配置,可以尝试一下:

readlink -e filename

答案3

由于这个问题不是尝试回答将带有符号链接的路径转换为物理路径(不含任何链接)这个更难的问题,而是仅获取目录和/或原始脚本的完整路径,有一个更简单的解决方案(在此示例中分解为多个部分以便于阅读,另外您可能希望单独使用其中任何一个部分):

#!/bin/bash
PROG_PATH=${BASH_SOURCE[0]}      # this script's name
PROG_NAME=${PROG_PATH##*/}       # basename of script (strip path)
PROG_DIR=$(cd "$(dirname "${PROG_PATH:-$PWD}")" 2>/dev/null 1>&2 && pwd)

echo "script directory is: $PROG_DIR"

您的测试用例应该涉及使用绝对路径、相对路径调用该脚本、“获取”它等,并且始终以包含该脚本的目录结束。

相关内容