Programmatically adjusting capability sets
A thread can retrieve and change its capability sets using the capget(2) and capset(2) system calls. However, the use of cap_get_proc(3) and cap_set_proc(3), both provided in the libcap package, is preferred for this purpose. The following rules govern changes to the thread capability sets:
...
- The new permitted set must be a subset of the existing permitted set (i.e., it is not possible to acquire permitted capabilities that the thread does not currently have).
- The new effective set must be a subset of the new permitted set.
Похоже, вы хотите использовать вывод одной команды более одного раза. В этом случае вам нужно сохранить его в переменной, а затем использовать эту переменную везде, где это необходимо. например. попробуй вот так:
response="$(curl -H "Accept: application/json" -H "Content-Type:application/json" \
-X POST --data "$data" "$url")"
echo "$response" >> "$LOG"
param=$(json_extract "$jsonkey" "$response")
Другой альтернативой является использование tee
, которое отправляет вывод команды в файл, а также на стандартный вывод. Например:
param=$(json_extract "$jsonkey" "$(curl -H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$data" "$url" | tee -a "$LOG" )")
Лично я считаю, что использование такой переменной, как "$response", приводит к более читабельному и понятному коду. Особенно, когда он позволяет разбивать очень длинные и сложные строки -на несколько коротких, легко -понятных строк.