В bash не «преобразовать аргумент в целое число для выполнения арифметики». В bash переменные обрабатываются как целое число или последовательность в зависимости от контекста.
Для выполнения арифметики необходимо вызвать оператор арифметического расширения $ (...)
. Например:
$ a=2
$ echo "$a + 1"
2 + 1
$ echo "$(($a + 1))"
3
или обычно предпочтительно:
$ echo "$((a + 1))"
3
Следует иметь в виду, что bash (в отличие от ksh93, zsh или yash) выполняет только целочисленную арифметику. Если у вас есть числа с плавающей точки (числа с десятичными разрядами), то есть другие инструменты для помощи. Например, используйте bc
:
$ b=3.14
$ echo "$(($b + 1))"
bash: 3.14 + 1: syntax error: invalid arithmetic operator (error token is ".14 + 1")
$ echo "$b + 1" | bc -l
4.14
или можно использовать оболочку с плавающей точки арифметической поддержкой вместо bash:
zsh> echo $((3.14 + 1))
4.14
-121--4891- С помощью gnu
datamash
:
{ head -n 1; datamash -s -g 1 $(printf 'mean %s ' {2..54}); } <infile
, где 54
- количество столбцов. Это предполагает, что поля разделены табуляцией. Если они разделены пробелами, выполните
{ head -n 1; datamash -t ' ' -s -g 1 $(printf 'mean %s ' {2..54}); } <infile
или если они разделены несколькими пробелами (пробелами/вкладками):
{ head -n 1; datamash -W -s -g 1 $(printf 'mean %s ' {2..54}); } <infile
Обратите внимание, что выходные данные будут отсортированы по первому столбцу.
-121--126033-Ядро видит странные коды сканирования и сбрасывает их. Я бы попытался получить эти значения кодов сканирования, а затем обновить индекс базы данных оборудования. Короче говоря, план таков:
получить коды из dmesg output - dmesg должен вывести что-то подобное, когда нажата неизвестная клавиша:
Нажата неизвестная клавиша (преобразованный набор 2, код 0xa0 на isa0060/serio0)
a0
является значением кода.
создайте пользовательский файл отображения кодов ключей. Примеры и справка содержатся в файле по умолчанию
(/usr/lib/udev/hwdb.d/60-keyboard.hwdb
для Arch, он может отличаться в других дистрибутивах).
обновите и запустите аппаратную базу данных, выполнив команды:
> udevadm hwdb --update
> udevadm trigger/dev/input/eventXX
, где eventXX
соответствует вашей клавиатуре (ее можно получить, запустив evtest
). Вместо запуска можно также перезагрузить компьютер.
Для получения более подробного описания см. Arch wiki и файл сопоставления ключевых кодов по умолчанию (или документацию по дистрибуции, если это не Arch).
Это надежный и простой метод, делает отображение на уровне ядра таким образом работает независимо дисплеи сервера, DE и т.д.
Этот сайт предлагает пользовательские клавиатурные преобразования http://straypoetry.com/ibm-model-m-keyboard/
Основано на информации с этого сайта: http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html