Оператор %
в раскрытии переменной удаляет соответствующий ему суффиксный шаблон.Таким образом, ${0%/*}
принимает переменную $0
и удаляет все соответствующие /*
в конце.Это эквивалентно команде dirname
, которая при задании пути возвращает родительский каталог этого пути.
Для обработки пробелов в переменной bash при каждом расширениипеременная (т.е. всякий раз, когда вы пишете $var
), вы должны заключить ее в кавычки.Короче говоря, всегда используйте "$var"
вместо просто $var
.
Попробуйте прочитать расширение параметров оболочки и цитирование переменных в руководстве по bash, чтобы узнать больше об этихдва предмета.