Приведите примеры не нормальности синтаксиса Bash.
Когда сравниваете Bash и PowerShell учитывайте, что Bash был выпущен в 1989 году и он следует стандарту IEEE POSIX Shell and Tools, а PowerShell вышел 2006 году.
if test-commands; then
consequent-commands;
else alternate-consequents;
fi
Еще раз напомню, Bash - это командный интерпретатор.
test-commands - любая команда: внешняя, внутрення. Если тестовая команда завершилась удачно (Exit Status = 0), то выполняем команду после then, если тестовая команда завершилась с ошибкой (Exit Sttaux ≠ 0), то выполняем команду после else. Это простой вариант, более точный синтаксис смотрите в man bash.
Пример
DWN=~/Downloads
if ls ${DWN} &>/dev/null ; then
xdg-open "${DWN}/$(ls -t -F -1 ${DWN} | grep -v '/$' | head -1)" 2>/dev/null
else echo "No such file or directory: $DWN" ;
fi
В этом примере тестовой командой является ls. Хотя это плохой пример, потому что существование пути лучше проверять встроенной командой [ или составной командой [[. Но пример показывает, что для if используется команда как условие и он анализирует статус её завершения.
Синтаксис типа if [ $number -ge n ] then fi можно придумать либо если ты кукухой едешь в дурку, либо если хочешь поиздеваться над людьми.
Вы забыли, что Bash это командный интерпретатор, а не язык программирования общего назначения и в нем нет True и False.
В приведённом примере [ это не часть синтаксиса, а вполне обычная команда, такая же как cd, pwd, alias и другие встроенные команды, просто у неё имя такое. Оставшаяся часть$number -ge n ] это аргументы команды.
Конечно еще нужно не забывать, что перед тем как выполнить команду [ Bash вместо $number подставит значение переменной с именем number.
Прошу обратить внимание, что проблемы не в Linux, а в Bash. PowerShell можно установить в Linux и назначить его как основной интерпретатор пользователя.
Приведите примеры не нормальности синтаксиса Bash.
Когда сравниваете Bash и PowerShell учитывайте, что Bash был выпущен в 1989 году и он следует стандарту IEEE POSIX Shell and Tools, а PowerShell вышел 2006 году.
Синтаксис простой:
Еще раз напомню, Bash - это командный интерпретатор.
test-commands
- любая команда: внешняя, внутрення. Если тестовая команда завершилась удачно (Exit Status = 0), то выполняем команду послеthen
, если тестовая команда завершилась с ошибкой (Exit Sttaux ≠ 0), то выполняем команду послеelse
. Это простой вариант, более точный синтаксис смотрите вman bash
.Пример
В этом примере тестовой командой является
ls
. Хотя это плохой пример, потому что существование пути лучше проверять встроенной командой[
или составной командой[[
. Но пример показывает, что дляif
используется команда как условие и он анализирует статус её завершения.Вы забыли, что Bash это командный интерпретатор, а не язык программирования общего назначения и в нем нет True и False.
В приведённом примере
[
это не часть синтаксиса, а вполне обычная команда, такая же какcd
,pwd
,alias
и другие встроенные команды, просто у неё имя такое. Оставшаяся часть$number -ge n ]
это аргументы команды.Конечно еще нужно не забывать, что перед тем как выполнить команду
[
Bash вместо$number
подставит значение переменной с именемnumber
.Работает именно так как описано в разделе "Word Splitting" в мануале от Bash. Не замечал проблем с этим механизмом.
Прошу обратить внимание, что проблемы не в Linux, а в Bash. PowerShell можно установить в Linux и назначить его как основной интерпретатор пользователя.
Иногда вместо файла может быть каталог с последним изменением, но с этим можно поработать.