top -b -n 1
Из man top
:
-b : Работа в пакетном режиме Запускает top в 'Пакетном режиме', который может быть полезен для отправки вывода из top в другие программы или в файл. В этом режиме top не будет принимать входные данные и будет работать до истечения лимита итераций, который вы установили с помощью опции '-n' или пока не будет убит.
Ваша проблема в основном связана с флагами -F
в строке $final_paths
. Он передается одним аргументом в curl
. Решение: не вместо -заключает в кавычки расширение переменной, чтобы полагаться на правильное разделение строки оболочкой.
Когда у вас есть список вещей, которые вам нужно передать в программу в виде отдельных элементов, используйте массив:
#!/bin/bash
url='http://localhost:4502'
url+='/content/test/events/whats-on/all-about-women-home/2018/wine-tasting/jcr:content'
tag_paths=(
'/content/cq:tags/sales-stage/pre-sale'
'/content/cq:tags/sales-stage/special-offer'
)
curl_opts=( --user "admin:admin" --form "tags3@TypeHint=String[]" )
for tag_path in "${tag_paths[@]}"; do
curl_opts+=( --form "tags2=$tag_path" )
done
curl "${curl_opts[@]}" "$url"
Здесь мы помещаем параметры для передачи curl
в массив curl_opts
. Мы инициируем этот массив с вещами, которые, как мы знаем, всегда будут там, а затем добавляем параметры пути тега, перебирая массив tag_paths
. Расширение "${curl_opts[@]}"
в двойных кавычках -в конце будет расширено на все элементы массива curl_opts
, причем каждый элемент будет отдельно заключен в кавычки.
Я также решил создать полный URL-адрес в начале, поскольку он статичен,и я использую длинный вариант для curl
, так как это сценарий, и мы можем позволить себе быть немного более подробным (ради удобочитаемости ).
Делая это таким образом, цитирование становится интуитивно понятным, и вам не нужно возиться с разбором списков, разделенных запятыми -, с экранированием специальных символов или установкой IFS
на какое-то не -значение по умолчанию.
Тот же скрипт, но для/bin/sh
:
#!/bin/sh
url='http://localhost:4502'
url="$url/content/test/events/whats-on/all-about-women-home/2018/wine-tasting/jcr:content"
set -- \
'/content/cq:tags/sales-stage/pre-sale' \
'/content/cq:tags/sales-stage/special-offer'
for tag_path do
set -- "$@" --form "tags2=$tag_path"
shift
done
set -- --user "admin:admin" --form "tags3@TypeHint=String[]" "$@"
curl "$@" "$url"
Здесь мы ограничены использованием только одного массива, $@
. Элементы устанавливаются в этом массиве с помощью set
.