Чтение переменной среды в псевдониме команды вызывает ее оценку?

529
chester89

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

logtee() { $ 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
Что вы имеете в виду "это псевдоним"? Я не вижу здесь псевдонимов (вы экспортировали функцию в один из ваших скриптов; например, «.profile» или «.bashrc» и т. Д.). Кроме того, почему у вас есть "sh.exe" в выводе? Вы работаете на Windows или Linux? И, наконец, что выдает `echo $ TEST_LOG_FOLDER`. jehad 7 лет назад 0
@jehad извини, я не понял - обновил вопрос chester89 7 лет назад 0

1 ответ на вопрос

3
AFH

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

echo $ > /dev/null 

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

[ -d "$" ] && \ 

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

logtee() { tee -a "$/$1" } 

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

да, это то, что я пропустил. Спасибо chester89 7 лет назад 0

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