Ctrl+U наиболее вероятен, потому что у Вас есть курсор в конце строки. Во-вторых, какую версию хинду Вы называете "последним системным обновлением"?
И что хотели бы Вы ctrl+left/right делать?
bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word
bindkey ";5C" forward-word
bindkey ";5D" backward-word
Примечание: Если конфигурация работает, но воображаемые ключи не делают то, что Вы хотите, это, возможно, потому что ключевое определение отличается от Вашего и моего, сделайте: cat > /dev/null
и нажмите клавиши, Вы хотели бы быть произведенными и корректировались бы соответственно.
Никакая потребность в bash
, плоскость sh
сделает также:
#! /bin/sh -
IFS=+; echo "$(($*))"
$*
в оболочках POSIX, расширяется до списка позиционных параметров (в этом случае, аргументы сценарию) разделенный первым символом $IFS
(или пространство, если $IFS
сброшен или ничто если $IFS
пусто). $((...))
оболочка внутренний арифметический оператор расширения (обратите внимание, что это поддерживает десятичные, восьмеричные и шестнадцатеричные числа),
Если Вам нужна поддержка с плавающей точкой, это - то, где Вам будет нужна другая оболочка как ksh93
или zsh
(нет bash
как bash
только целочисленная арифметика поддержек), хотя Вы могли также использовать awk
:
#! /usr/bin/awk -f
BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}
Это будет использовать long
(для целого числа) и double
(для плавающей точки), вводят числа, как реализовано Вашей системой. Входные числа должны быть десятичной или инженерной записью с плавающей точкой в английском стиле (разделитель с плавающей точкой является символом точки независимо от локали). С некоторыми awk
реализации, это перестанет работать, если первое число будет отрицательно как awk
попытался бы интерпретировать его как опцию.
Некоторые awk
реализации как GNU awk
когда POSIXLY_CORRECT находится в среде, также поддерживают hexadecimals включая с нотациями двоичного порядка. Или с --non-decimal-data
, это понимает octals и hexadecimals:
$ POSIXLY_CORRECT=1 ./sum 0xap3 0xa
90 # (0xa * 2^3) + 0xa
$ awk --non-decimal-data -f ./sum 010
8
Можно использовать следующую функцию удара:
sum() {
local sum=0
for arg in "$@"; do
(( sum += arg ))
done
echo $sum
}
$1
первый аргумент, $2
второй аргумент, и так далее. Переменные 0$ являются названием сценария. Общее количество аргументов хранится в $ #. $ переменных и $* возвращают все аргументы.См. также: how-to.wikia.com/wiki / …
– Radu Rădeanu
05.11.2013, 10:04
first=$1;shift
– icarus
19.11.2016, 19:45
Вариант нецикличного выполнения:
{ printf %d+ "$@"; echo 0; } | bc
Поместите вышеупомянутое в файл сценария, sum
.
#!/bin/bash
{ printf %d+ "$@"; echo 0; } | bc
Выполните его как так:
$ ./sum 4
4
$ ./sum 4 4 5
13
IFS=+ means afterward the "$*" will expand to "all the arguments separated by a '+'", hence the $((computation)) will be replaced with the sum of all arguments
– Olivier Dulac 05.11.2013, 12:13