Sergio, Гит под капотом юзает много gnu tools, таких как sed, diff и др.
И регулярный вызов множества утилит в пайпе под линуксом работает быстрее чем под виндой.
Ну так синтаксис - интуитивен и понятен.
А вот использование команды, где предплоложительно должен быть expression, а вы его там не указываете - не интуитивно и некорректно.
Я понял, что уже придираетесь к мелочам, вместо сути.
в первом случае у вас собственно нету expression вообще, то есть false, но вы делаете !, поэтому все верно - НЕ экспрешин вернет тру
во втором у вас есть выражение - 1, просто 1. Это саксесс, но вы делаете ему инверсию !, поэтому фалс.
Даже без консоли все интуитивно.
А теперь самое интересное.
Это не относится к башу. Оператор тест впоследствии встроили в оболочки, но это отдельная утилита, родившаяся еще во времена unix-лайк систем и относится к GNU tools
Поэтому какие претензии к баш? Вы еще синтаксис awk поругайте, что это баш.
1. Питон - универсальный язык. Хочешь скрипты, хочешь бэкенд, хочешь - прикладные библиотеки на любой вкус и цвет, особенно что-то с телеграм, АИ. парсингом.
2. На питон просто полным полно материалов с картиночками на любой вкус и цвет.
Просто в свое время бейсик и паскаль устарели, и когда выбирали что больше всего подходит для обучения в школе - Питон выглядел лучше на фоне других языков.
До питона там властвовал перл, вообще-то.
Баш - нишевый язык оболочки. Он всегда будет лидировать в администрировании, а не в программировании. Основное назначение баш - вызов внешних программ, именно там он и проявляется на отлично. В баше нет библиотек. Вместо этого есть вся мощь GNU Tools и любых внешних программ.
Например программы /bin/[, синтаксис которой вам показался неинтуитивным.
ага, пример контринтуитивности.
То есть?
Вы проверили что 0.
Ну окей, 0 и есть 0. Вы его ни с чем не сравнивали. Команда test выполнилась успешно, ибо синтаксически конструкция верна.
Можно было написать if true, было бы тоже самое. В линуксе 0 - это почти всегда был true.
hint000, нужно все таки понимаьт в чем разница между stdout и exit code
Ни в одной операционной системе нельзя вернуть строку в качестве exit code, это архитектурно один байт, при котором 0 это успех, не ноль это ошибка.
А что там в stdout возвращается - это еще тестить надо.
Таким образом можно проверить вот так
Попробуй же собственный код - он тупо не будет работать. Есть пинг или нет пинга, будет возвращать успех, потому что возврат из функции в bash - это exit code
hint000, эм, это не возвращаемое значение функцией, это просто вывод единицы в stdout
У вас же, получается что из-за echo 1, последняя команда будет echo, которая успешно выполнется, и в консоль напишет 1, а код возврата будет 0.
а вернуть значение - return 1, но зачем, и так вернется код последней выполненной команды (ping)