${D}
— обычное начало пути, используемого рецептом Yocto, где рецепт устанавливает файлы, принадлежащие пакетам, созданным этим рецептом. Эти каталоги в ${D}
сканируются системой сборки на наличие файлов для включения в пакеты (, таких как RPM-файлы ), и для включения в так называемое -дерево sysroot, где файлы (, например. идут библиотеки и заголовки ), используемые другими пакетами. Для этого сканирования существуют некоторые правила по умолчанию, и эти правила можно расширить. Рекомендуется максимально использовать эти пути Yocto по умолчанию в ${D}
, чтобы воспользоваться встроенными -механизмами Yocto.
${libdir}
определяется в bitbake.conf по умолчанию как :${exec_prefix}/lib
, который по умолчанию равен /usr/lib
, определенный в том же файле.
install -d ${D}${libdir}
В конце концов, эта команда оболочки «установить» просто создает каталог, в котором должны быть сохранены файлы (, например. с помощью do _install ), который в конечном итоге должен быть установлен под /usr/lib
на целевом устройстве.
${D}/a/b/c
для файла c
— это просто промежуточный путь, используемый для упаковки Yocto, а ${D}
«отрезается», когда тот же файл c
находится в целевой файловой системе. Так, например, ${D}/a/b/c
будет на /a/b/c
цели.
${D}
по умолчанию определяется в poky/meta/conf/bitbake.conf как:
TMPDIR = "${TOPDIR}/tmp"
BASE_WORKDIR ?= "${TMPDIR}/work"
WORKDIR = "${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
D = "${WORKDIR}/image"
обычно требуется процент операции, всего/использовано, не доступно/использовано !
в массиве или параметрах, когда мы используем *вместо @, мы получаем одну строку, которую вы не можете перебрать!
попробуй так
#get data from api save it to variable in order to avoide calling it twice (resources consumption and asyncroned results)!
disk_infos="$(curl -ks -XGET https://API/cluster1)";
# extract disk_space_available frome results
disk_available=($(awk '/disk_space_available/ {print $5}' <<< "${disk_infos}"));
# extract disk_space_used from same results
disk_used=($(awk '/disk_space_used/ {print $5}' <<< "${disk_infos}"));
# declare empty array for holding errors
disk_errors=();
# loop over arrays
for i in "${!disk_used[@]}";do
used_perc=$((disk_used[i]*100/disk_available[i])); # calculate percentage
if [[ "${used_perc}" -gt 80 ]]; then # check perc value if greeter than 80
disk_errors+=("FAIL - Storage is ${used_perc}% full at index ${i}"); # append the error to the holder
fi
done
# check if errors were encountred
if ((${#disk_errors[@]}));then # check if disk_errors count is not 0
echo ${#disk_errors[@]} errors found; # print errors count
printf '%s\n' "${disk_errors[@]}" ; # print each error msg in a line
else
echo everything is fine ${#disk_errors[@]} errors found; # print errors count
fi