Чтение переменной среды в псевдониме команды вызывает ее оценку?
У меня есть простой псевдоним для записи в файлы журналов (это то, что у меня есть в моем файле.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 ответ
Первая строка вашей функции действительно оценивает ее. Вы можете заменить его на:
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
,