Лучшая практика переменной Unix: Если переменная, содержащая путь, заканчивается в наклонной черте

Какова лучшая практика при хранении каталога в имени файла в системе Unix? Путь к каталогу должен закончиться в наклонной черте?

Метод A

TMP="/tmp/pasteTmp/"

который позволяет Вам делать:

cd "$TMP$fileName"

Метод B

TMP="/tmp/pasteTmp"

который позволяет Вам делать (с дополнительной наклонной чертой, которая кажется менее чистой):

cd "$TMP/$fileName"

но также и позволяет Вам делать:

cd "$TMP/actualFileName"

То, которое я думаю, является невозможным использованием первого метода.

8
задан sixtyfootersdude 23 April 2010 в 13:45
поделиться

3 ответа

это не имеет значения. Вместо этого вы всегда должны предполагать, что конечная косая черта отсутствует при использовании пути, добавляя свой собственный. / foo // эквивалентно / foo /, так что это работает.

11
ответ дан 5 December 2019 в 10:01
поделиться

Когда вы работаете над большим приложением-монстром с сотнями скриптов и множеством библиотек и исполняемых файлов, вы начинаете больше беспокоиться о том, что причиняет меньше боли, чем о том, что «кажется менее чистым». Я согласен, что двойная косая черта выглядит забавно, но на самом деле Unix это не волнует. Я бы предпочел предположить, что конечной косой черты нет и знать, что она все равно будет работать, когда я сам добавлю ее, чем надеюсь, что все вспомнили, чтобы включить ее, а затем мой код сломается, когда кто-то забудет добавить конечную косую черту.

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

3
ответ дан 5 December 2019 в 10:01
поделиться

Когда вы ссылаетесь на каталог при обычном использовании, вы не включаете косую черту: мой домашний каталог - / home / andy , а не / home / andy / . Если вы пишете скрипты, предполагающие наличие косой черты в конце, рано или поздно вы забудете ее включить и удивитесь.

Я не уверен, что согласен с вами, что лишняя косая черта «кажется менее чистой». Когда вы не используете переменные, вы ожидаете, что имена каталогов и файлов будут разделяться косой чертой; когда имя каталога хранится в переменной оболочки, я все еще считаю естественным читать и писать с косой чертой, разделяющей части.

3
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

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