Почему я получаю ошибку, когда я использую `uname` в моем.bashrc?

В моем.bashrc у меня есть следующий код

if [`uname` == "Linux"]; then
    echo "It worked"
else
    echo "It didn't work"
fi

Но когда я получаю исходный код.bashrc, я получаю следующие результаты

[Linux: команда не найдена

Не сработало

Странно, [ это не опечатка, это часть ошибки. Если я закомментирую оператор if, ошибка исчезнет, ​​поэтому я почти уверен, что это источник ошибки. Плюс, если я изменю Linux в linux, то ошибка также изменится на строчную.

И если я повторяю uname, я получаю Linux.

Для источника моего.bashrc я использовал source .bashrc а также начали новую сессию Bash, набрав bash на терминале командной строки.

Я не думал, что так сложно проверить тип ОС, но я не могу понять правильный синтаксис для.bashrc.

Я не вижу, что я делаю неправильно, кто-нибудь может помочь?

2 ответа

Решение

Вы забыли пробел после квадратных скобок. Первая строка должна выглядеть так:

if [ `uname` == "Linux" ]; then

В вашей версии без пробелов [ и выход uname объединяется в один исполняемый файл с именем [Linux, которого нет в PATH.

Баш в привередливых про расстояние. Вам нужны пробелы в вашем условном

if [ `uname` == "Linux" ]; then
    echo "It worked"
else
    echo "It didn't work"
fi
Другие вопросы по тегам