Linux: доступ к каталогу, содержащему пробел - PullRequest
1 голос
/ 19 мая 2011

В скрипте у меня есть эта строка

#!/bin/sh

log="${var}logs/console logs/since2_%m-%d-%Y.log" # <-- console logs has a space

как я могу получить доступ к этому файлу?

ставить цитаты, как:

log="${var}logs/"console logs"/since2_%m-%d-%Y.log"

отменяет кавычки вокруг него, а экранирование кавычек заставляет его попытаться найти файл, содержащий символ "

Ответы [ 5 ]

3 голосов
/ 19 мая 2011

Возможно, проблема в том, что вы используете $ log, вам, вероятно, следует использовать "$ log" для сохранения пробелов.

2 голосов
/ 19 мая 2011

Проблема не в том, что указано в вопросе.Вот пример сценария, который работает.Обратите внимание на кавычки вокруг ИСПОЛЬЗОВАНИЯ $ log в дополнение к определению.Если вам нужна дополнительная помощь, опубликуйте полный сценарий или минимальное рабочее подмножество, которое люди могут запустить для воспроизведения проблемы.

1 голос
/ 19 мая 2011

переменная $ IFS содержит разделитель полей, который по умолчанию является пробелом, поэтому попробуйте ввести

oldifs="$IFS"
IFS="
"

log="${var}logs/console logs/since2_%m-%d-%Y.log"

# do whatever you want with $log now

IFS=$oldifs
0 голосов
/ 19 мая 2011

Если вы хотите иметь сегодняшнюю дату в этом имени файла:

log="$(date "+${var}logs/console logs/since2_%m-%d-%Y.log")"
touch "$log"

Я бы порекомендовал вам использовать %Y-%m-%d, поскольку это сортирует и хронологически, и лексически.

0 голосов
/ 19 мая 2011

Я думаю log="${var}logs/console\ logs/since2_%m-%d-%Y.log" должно работать. Попробуйте один раз
Идея состоит в том, чтобы избежать [ПРОБЕЛ]

...