Понятия не имею, почему он там, но вот как отключить его с помощью реализации GNU bc
:
echo '6^6^3' | BC_LINE_LENGTH=0 bc
BC_LINE_LENGTH
Это должно быть целое число, определяющее количество символов в выходной строке для числа. Сюда входят символы обратной косой черты и новой строки для длинных чисел. В качестве расширения нулевое значение отключает многострочную функцию. Любое другое значение этой переменной, меньшее 3, устанавливает длину строки равной 70.
Я был сбит с толку этим вопросом, я думал, что это связано с происхождением многострочной функции, это действительно кажется как странный. В любом случае, реальный ответ заключается в том, что если вы не заключите переменную в кавычки, оболочка выполнит разделение на слова , прежде чем это будет передано в echo
. Разделение слов - это процесс, при котором расширение разбивается на «слова» в зависимости от содержимого IFS
, эти «слова» затем становятся разными аргументами. В примере с вопросом это создает два аргумента для echo, которые echo
затем разделяются пробелом (я знал это до того, как Стефан прокомментировал, честно ...).
Чтобы этого не произошло, просто заключайте переменную в двойные кавычки:
num=$(echo '6^6^3' | bc)
echo "$num"
Иногда это действительно полезно как способ удалить символы IFS из переменной (хотя printf% s
более безопасен для произвольных строк). Например (в bash
):
$ var=$'spaces: newlines:\n\n\ntabs:\t\t\t end'
$ echo "$var"
spaces: newlines:
tabs: end
$ newvar="$(printf '%s ' $var)"
$ echo "$newvar"
spaces: newlines: tabs: end
Установите зависимость leveldb для plyvel с помощью системного менеджера пакетов перед установкой plyvel с помощью pip:
sudo apt-get install libleveldb-dev