У меня проблема с извлеченным бельем из результата grep. Windows (gitBash) не может их сравнить, потому что число - это строка, а не число (моя macOS делает это без проблем).

What i want to do is: add a leading zero to the line numbers if they are smaller than 10

Вот фрагмент кода:
local number="" local command="" # grep complete list and itereate over this list grep -n --color=always "${1}" "${2}" | while read -r greppedList ; do for ln in "${greppedList}" ; do # split the line to number and command number=$(echo ${ln} | cut -d ':' -f 1) if (( ${number} < 10 )) ; then command="${ln:2:${#ln}-1}" else command="${ln:3:${#ln}-1}" fi printWithFormattedLineNumbers "${number}" "${command}" done done
Проблема в окнах заключается в том, что строка if (( ${number} < 10 )) ; then .
Windows не может сравнить это, потому что это не число.

Можете ли вы помочь мне изменить способ получения белья?

1 ответ1

0

Проблема в окнах заключается в том, что строка if (($ {number} <10)); затем. Windows не может сравнить это, потому что это не число.

Затем обработайте его как строку символов и используйте оператор case вместо if:

case "${number}" in
[0-9])
        command="${ln:2:${#ln}-1}"
        ;;
*)
        command="${ln:3:${#ln}-1}"
esac

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .