Назад | Перейти на главную страницу

bash скрипт в unix - вернуть полный путь и имя файла

Я хочу разработать сценарий bash в unix, и этот bash возвращает полный путь, потому что я хочу использовать этот файл в других местах.

Попробуйте, если у вас есть readlink в вашей системе:

readlink -e filename

Вы ищете полный путь и имя файла запущенного скрипта?

#!/bin/bash

_my_name =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"

Поскольку этот вопрос не пытаясь ответить на более сложный вопрос о преобразовании пути с символическими ссылками в физический путь (без каких-либо ссылок), а просто получить каталог и / или полный путь к исходному сценарию, есть более простое решение (разбитое на этот пример на компоненты для удобства чтения, плюс вы можете использовать любую из этих частей по отдельности):

#!/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"

Ваши тестовые примеры должны включать вызов этого сценария с указанием абсолютного пути, относительного пути, его "источник" и т. Д. И всегда завершаться каталогом, содержащим сценарий.