/etc
leaf_merge_package() { pushd $1 > /dev/null 2>&1 local _trace_dir="${TRACE_DIR}/${PKG_PREFIX}/${PKG_NAME}" local _item _item_conflict _mode _owner _group local _time="$(date +%Y%m%d%H%M%S)" cat "${_trace_dir}"/DIRS | while read -r _item; do _mode=$(stat -c %a ."${_item}") _owner=$(stat -c %u ."${_item}") _group=$(stat -c %g ."${_item}") install -d -m ${_mode} -o ${_owner} -g ${_group} "${_item}" done cat "${_trace_dir}"/FILES | while read -r _item; do _mode=$(stat -c %a ."${_item}") _owner=$(stat -c %u ."${_item}") _group=$(stat -c %g ."${_item}") if [[ "${_item}" == /etc/* && -e "${_item}" ]]; then _item_conflict="$(dirname "${_item}")/._$(basename "${_item}").conflict_${PKG_NAME}_${_time}" install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item_conflict}" echo "Debug: install ${_item} as ${_item_conflict}$" leaf_record_message "Config file confliction on ${_item}, the package provided version is installed as ${_item_conflict}." else install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item}" fi done cat "${_trace_dir}"/LINKS | while read -r _item; do cp -dp ."${_item}" "${_item}" done leaf_invoke_hooks echo "The MESSAGE after merge is ${MESSAGE}" popd > /dev/null 2>&1 }
当前的写法中 leaf_record_message 在管道造成的子 shell 中运行,从而并不能记录 MESSAGE 变量
leaf_record_message
MESSAGE
No dependencies set.
The note is not visible to the blocked user.
当前的写法中
leaf_record_message在管道造成的子 shell 中运行,从而并不能记录MESSAGE变量