sed "/<\/head>/i\
$strToInsert" file.html
Это вставит новую строку перед каждым , но почему у вас больше одной?
Используйте bash $(( ))
для арифметики:
ACC=0
for i in $(command to get sizes); do ACC=$((i + ACC)); done
echo $ACC
Поместите свои номера в файл с именем "file.txt", затем
var=$(cat file.txt)
echo $((${var//$'\n'/+}))
В основном паттерн в аритмическом выражении имеет вид :${parameter//find/replace}
, или в нашем примере ${var// /+}
. Это Расширение параметра Bash:
- `\n` will add blank spaces between the numbers in the list
- The double slashes `//` are for replacing all occurrences of space with `+` sign, if you put one slash `/`, only first space is going to be replaced. The space is there because you are replacing space with plus sign.
Предыдущее решение можно упростить следующим образом:
var=echo $(< file.txt)
echo $((${var// /+}))
Однако оба решения страдают от подстановок команд , которые могут обрезать завершающие символы новой строки
Подробнее здесь
Из этого списка команд ни одна из них не может складывать числа, поэтому я полагаю, что идея состоит в том, что должны использоваться арифметические расширения оболочки.
Что-то вроде:
echo "$(($(LC_ALL=C ls -nq | tr -s ' ' | cut -d ' ' -f5 | tail -n +2 | tr '\n' +)0))"
(здесь предполагается, что ни один из файлов не является файлом устройства, для которого выходные данные ls -l
не имеют размер в 5 -м столбце, а старший номер устройства ).
Обратите внимание, что вывод ls -l
или ls -n
зависит от локали и не указывается в локалях, отличных от C
/ POSIX
.
Кроме того, без -q
это не будет работать для файлов, имя или цель символической ссылки которых содержат символы новой строки.
Неиспользование -q
будет означать уязвимость внедрения произвольной команды запустите ли вы команду в каталоге, где кто-то может создать файлы с вредоносными именами (попробуйте, например, после запуска ln -s $'\nx x x x a[$(reboot)0]' x
без-q
)
Вам нужно -n
вместо -l
, так как с -l
вы получаете имена пользователей/групп вместо идентификаторов, которые могут содержать символы пробела.
Обратите внимание, что tail +2
устарел. Стандартный синтаксис — tail -n +2
.