1

У меня есть простой псевдоним для записи в файлы журналов (это то, что у меня есть в моем файле .profile):

logtee() {
    ${TEST_LOG_FOLDER:?"empty_log_folder"}
    tee -a $TEST_LOG_FOLDER/$1
}

Я читаю папку из переменной окружения (поэтому эта переменная содержит значение, подобное 'd/my/logs'). Однако, когда я пытаюсь использовать этот псевдоним, выполнив echo 'this is reading path from env.variable!' | logtee whatever.log это работает, но вывод: sh.exe": /d/my/log/path: is a directory .
Я сделал что-то неправильно? Почему переменная среды чтения оценивает это? Я подозреваю, что это как-то связано с тем, что это псевдоним, потому что в обычном скрипте .sh подобный код работает без проблем.
PS Я использую msysgit на Windows 7, может быть в этом проблема?

1 ответ1

3

Первая строка вашей функции действительно оценивает ее. Вы можете заменить его на:

echo ${TEST_LOG_FOLDER:?"empty_log_folder"} > /dev/null

Лучшее решение было бы:

[ -d "${TEST_LOG_FOLDER:?'empty_log_folder'}" ] && \

Лучшее решение - не использовать отдельную строку, поэтому вся функция становится:

logtee() {
    tee -a "${TEST_LOG_FOLDER:?'empty_log_folder'}/$1"
}

Обратите внимание, что я изменил кавычки, если в $TEST_LOG_FOLDER или $1 есть пробел.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .