Проверьте диспетчер конфигурации в Visual Studio. Убедитесь, что все проекты соответствуют платформе. Я хотел, чтобы платформа была x64, но мое основное приложение было настроено на AnyCPU. Установите это в x64, и это решило проблему.
В чистой оболочке POSIX
if [ -t 1 ] ; then echo terminal; else echo "not a terminal"; fi
возвращает "терминал", потому что вывод отправляется на ваш терминал, тогда как
(if [ -t 1 ] ; then echo terminal; else echo "not a terminal"; fi) | cat
возвращает "не терминал", потому что вывод в скобках передается по конвейеру cat
.
Флаг -t
описывается на страницах руководства как
-t fd Истина, если файловый дескриптор fd открыт и относится к терминалу.
... где fd
может быть одним из обычных назначений файлового дескриптора:
0: stdin
1: stdout
2: stderr
Команда test
(встроена в bash
), есть возможность проверить, является ли дескриптор файла терминалом.
if [ -t 1 ]; then
# stdout is a tty
fi
См. « man test
» или « man bash
» и выполните поиск по запросу « - t
"
Вы не указываете, какую оболочку используете, но в Bash вы можете сделать это:
#!/bin/bash
if [[ -t 1 ]]; then
# stdout is a terminal
else
# stdout is not a terminal
fi