Объявите, что переменная, встроенная, использует с заменой параметра

Я хотел бы надежный способ получить название каталога, где сценарий живет. Я хотел бы, чтобы этот подход также работал, при вызове из того же каталога (большая часть вовлечения вариантов использования dirname $0 возвратился бы"." в этом случае). Вот один такой подход:

FULL="$( cd "$(dirname "$0")" ; pwd -P )"
SHORT=${FULL##*/}

Логика достаточно проста... перемещаются в каталог сценария, звонят pwd оттуда, и затем снимите все кроме заключительного имени каталога. Однако я, может казаться, не выясняю синтаксис для преобразования этого в остроту. Я хотел бы справку, делающую это.

1
задан 26 March 2019 в 15:35

1 ответ

Один подход должен использовать basename вместо Вашей замены параметра.

FULL=$(basename "$(cd $(dirname $0) ; pwd -P)")

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

Другой метод должен был бы полагаться PWD переменная:

FULL=$(cd $(dirname $0) ; echo ${PWD##*/})

Метод, который не требует изменяющегося каталога, полагался бы readlink команда:

FULL=$(basename "$(readlink -f $(dirname $0))")
4
ответ дан 3 December 2019 в 06:49

Другие вопросы по тегам:

Похожие вопросы: