Очевидно, вы добавили /Users/zeinep/.virtualenvs/csv_import/bin
к вашему $PATH
после того, как bash сохранил (хешированную )версию /usr/local/bin
. Исправление так же просто, как hash -d ipython
.
Ведущие нули во входном значении заставляют оболочку интерпретировать его как восьмеричное число.
Вы можете принудительно выполнить десятичное преобразование, используя 10#
, например.
$ printf "Please enter the ticket number:\t"; read vTICKET; vTICKET=$(printf %04d "$((10#$vTICKET))" ); printf "$vTICKET\n";
Please enter the ticket number: 072
0072
Обратите внимание, что в bash вы можете присвоить результаты printf
переменной напрямую, используя -v
, например.printf -v vTICKET %04d "$((10#$vTICKET))"
См. также Как запретить Bash интерпретировать восьмеричный код вместо целочисленного?
В Bash можно избавиться от любых нулей в префиксе. После установки на extglob
сначала:
$ shopt -s extglob
Вы можете использовать *(0)
после ##
в расширении параметра:
$ read -r TICKET; printf "%.4d\n" "${TICKET##*(0)}"
000000000000000000000000000000000000072
0072
Когда закончите, вы можете вернуться к обычному режиму с помощьюextglob
:
$ shopt -u extglob
Теперь *(0)
снова подвергается базовому расширению имени пути:
$ read -r TICKET; printf "%.4d\n" "${TICKET##*(0)}"
asdfasdf(0)72
0072
$ read -r TICKET; printf "%.4d\n" "${TICKET##*(0)}"
asdfasdf072
bash: printf: asdfasdf072: invalid number
0000