Я хотел бы создать скрипт bash, который принимает как относительные, так и абсолютные пути. Было бы легко фильтровать с первым символом, но мне интересно, есть ли более элегантный способ.Принять как относительные, так и абсолютные пути в сценарии bash
ответ
Вы можете сделать преобразование в абсолютный путь для всего пройденного с использованием readlink?
например. говорят, что вы находитесь в/дома/Foo, который содержит 'бар' папку:
readlink -f bar
->/дома/Foo/бар
readlink -f /home/foo/bar
->/дома/Foo/бар
Это тоже брат 'realpath'. –
Спасибо большое, я не знал, что использование readlink (ни realpath) !!! (Я подтвердил, что вы отвечаете, но недостаточно репутации, чтобы он стал видимым) – Labo
Использование readlink -f или realpath полностью соответствует моим потребностям!
Ваш вопрос немного расплывчатый. Как, когда, где вы хотите вводить данные, которые могут быть относительными или абсолютными? Причина в том, имеет значение, можете ли вы проверить наличие файла. (например, '[-f" $ var "]') Если вы говорите о позиционных параметрах, то вы можете проверить существование, а затем использовать 'readlink -f' или' realpath', как это было предложено с помощью джема. Если, однако, вы не находитесь в контексте, где тест на существование будет правдой, тогда и не поможет. –