Как проверить правильность моего хвоста?

Я не думаю, что вы используете bash , потому что оба параметра -n и - Флаги e обычно распознаются утилитой bash echo .

Убедитесь, что вы запускаете сценарий, явно указав bash в качестве интерпретатора,

$ bash ./script.sh

или сделав его исполняемым и запустив его,

$ chmod +x ./script.sh
$ ./script.sh

Ваши арифметические операции в сценарии также неверны ( при вычислении процентиля ). bash выполняет арифметические подстановки в $ ((...)) и арифметические вычисления в ((...)) .

Вот альтернативная реализация:

iter=70500

for(( i = 1; i <= iter; i++ )); do
    if ! (( i % (iter/100) )); then
        printf '\r%d%%' "$(( (100*i)/iter ))"
    fi
done

echo
1
18.03.2019, 15:40
1 ответ

Если нет фактического набора тестов для проверки соответствия POSIX хвоста, лучший способ — прочитать документацию POSIX для хвоста и посмотреть, соответствует ли ваша версия.

Тем не менее, я был бы удивлен, если бы busybox tailбыл POSIX-правильным --busybox строго оптимизировал размер, а не полное соответствие стандартам в своем экспортируемом интерфейсе. Например, он имеет -c, только если FEATURE_FANCY_TAILвключен во время компиляции, что, если вы оптимизируете размер, не будет:https://git.busybox.net/busybox/tree/coreutils/tail.c#n28

2
27.01.2020, 23:30

Теги

Похожие вопросы