On Tue, Nov 21, 2017 at 04:12:46PM +0200, Valentin Nechayev wrote: > > Tue, Nov 21, 2017 at 14:55:11, spell wrote about "Re: [freebsd] test и > пустые строки": > > > > Я в таких случаях _никогда_ не надеюсь на постулаты типа "эта команда > > > никогда не выдаст более одного слова"; > > > > Даже если эта команда - "echo 1"? ;) > > Да.
Нуу, просто если даже на это нельзя положиться, тогда, чтобы быть последовательным, надо подстилать соломку на каждом шагу, и под соломку соломку, и так до бесконечности. > > > если где-то записано `x` вместо > > > "`x`", это следует считать прямой командой шеллу перепарсить вывод, а > > > такие команды не надо использовать, если нет на то прямого указания. > > > > Не поняла, почему "перепарсить"? > > Потому что он обязан это сделать. Принять строку, разделить IFS??ами > (field splitting) и набрать аргументов, сколько получилось после > разделения. А если в кавычках, то это правило выключается. Поняла, согласна теперь. > > > Ну и если "всё очевидно", то что мешает упростить работу шеллу в > > > случае test? > > > > В смысле? > > В смысле, что если "$x" вместо $x, не будет запускаться field > splitting, независимо от того, там одно реальное поле или нет. То же. > Честно - это надо обдумать. Беру таймаут. Ещё соображения: Флаг ZF (zero flag) устанавливается в 1 когда результат операции равен нулю. Единица обозначает ноль. Это же абсолютно коряво. Флаг чётности, отражающий чётное количество единиц нечётной цифрой - туда же. Ну и так, больше юзерское соображение: если нужно создать enum с вариантами ответов "да/нет", то более натуральный порядок следования будет "да, нет", а не "нет, да", и индексы будут выданы соответственно 0-да, 1-нет. Имхо, устоявшаяся модель с 0-false является источником недоразумений, ошибок, проблем и более длинного кода, наподобие как это делает отсчёт индексов массивов в Паскале с единицы. Одним словом, нарушает принцип KISS. > > > И не везде она такая (вон в Windows положительные коды - > > > успех, отрицательные - ошибка, и в обоих множествах 2 миллиарда > > > возможностей). > > > > Зашибись решение. Стоит только не проследить за типом данных > > (signed/unsigned и длиной в байтах) как вуаля - лёгким движением руки > > отрицательное превращается в положительное. > > Ну а в юниксах очень похоже. > Я не смотрел, какой интерфейс сисколлов в 64-битных FreeBSD, но в > Linux это так - значения от (со знаком) -4096...-1 это ошибки > (-errno), а остальные - положительные (например, дескрипторы файлов). Разумеется, речь не о тех функциях, которые по определению возвращают спектр положительных результатов. > Ну а "не проследить" за такими вещами в C это настолько глобальная > ошибка, что вряд ли уже можно с ней мириться... Это ж надо следить. А так ноль - он везде ноль, в любом целочисленном типе данных. _______________________________________________ freebsd mailing list freebsd@uafug.org.ua http://mailman.uafug.org.ua/mailman/listinfo/freebsd