Проблема пути Bash - PullRequest
       11

Проблема пути Bash

1 голос
/ 23 января 2012

У меня есть скрипт, который содержит следующую строку:

propFile="${0%/*}/anteater.properties"
  1. Что означает "$ {0% / *}"?
  2. Эта команда задает путь к сценарию - но в пути есть пробелы, и сценарий не может найти этот файл - как с ним работать?

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Оператор % в раскрытии переменной удаляет соответствующий ему суффиксный шаблон.Таким образом, ${0%/*} принимает переменную $0 и удаляет все соответствующие /* в конце.Это эквивалентно команде dirname, которая при задании пути возвращает родительский каталог этого пути.

Для обработки пробелов в переменной bash при каждом расширениипеременная (т.е. всякий раз, когда вы пишете $var), вы должны заключить ее в кавычки.Короче говоря, всегда используйте "$var" вместо просто $var.

Попробуйте прочитать расширение параметров оболочки и цитирование переменных в руководстве по bash, чтобы узнать больше об этихдва предмета.

1 голос
/ 23 января 2012
  1. удаляет суффикс, соответствующий /*, т. Е. Все после последней косой черты, включая сам косой черты.

  2. цитируйте его везде, где вы его используете (cat "$propFile").

...