Я разобрался.
#!/bin/bash
set -x
grep -q 'PASS_WARN_AGE 7' /etc/login.defs
if [ ${?} -eq 0 ]; then
echo "RHEL-06-000054 not a finding"
grep -q 'PASS_WARN_AGE 0' /etc/login.defs
elif [ ${?} -eq 0 ]; then
sed -ie 's/PASS_WARN_AGE\s\s\s\s0/PASS_WARN_AGE 7/g' /etc/login.defs; echo "RHEL-06-000054 patched"
else echo "needs further review"
fi
В zsh вы можете передать флаг + X
в автозагрузку
, чтобы загрузить функцию из $ fpath
, не выполняя ее.
Кроме того, вы можете скопировать функцию с новым именем, манипулируя массивом functions
.
autoload -Uz +X _normal
functions[_original_normal]=$functions[_normal]
_normal () {
…
}
пока я запускаю
_normal &> /dev/null || true
_normal
, так как другие завершения обычно не должны вызываться напрямую из оболочки, и (без перенаправления) появляется сообщение об ошибке:
_default: compcall: 12: может быть только вызывается из функции завершения
|| true
здесь кажется ненужным, поскольку _normal
, вызванный таким образом, не возвращает код ошибки.