이 bash 스크립트에서는 모든 Nextcloud docker 인스턴스 내의 모든 애플리케이션을 업데이트합니다.
#!/bin/bash
ALL_NC="next1.mycloud.com next2.mycloud.com next3.mycloud.com"
for i in $ALL_NC; do
DOCKERIMAGE="${i//.}_app_1";
# TODO: echo this only if something happens
# echo "check $DOCKERIMAGE"
for a in $(docker exec --user www-data ${DOCKERIMAGE} php occ app:list|grep Disabled -B999|grep -- -|cut -d" " -f4|cut -d: -f1|xargs); do
docker exec --user www-data ${DOCKERIMAGE} php occ app:update $a
done
done
exit 0
그러면 다음과 유사한 출력이 생성됩니다.
news new version available: 14.2.2
news updated
news new version available: 14.2.2
news updated
news new version available: 14.2.2
news updated
cron
스크립트가 출력을 생성하는 경우 이 함수를 호출하면 자동으로 메일이 루트로 전송됩니다.
콘텐츠가 업데이트될 때만 에코되어야 하는 행을 활성화하려면 어떻게 해야 합니까?
답변1
$(...)
표준 출력에 기록하는 대신 출력을 캡처하기 위해 코드의 일부를 여기에 넣을 수 있습니다 .
예를 들어:
OUT="$(
for i in 1 2 3; do
echo "updated $i"
done
)"
if [[ "$OUT" == *"updated"* ]]; then
echo "$OUT"
fi
참고: 이중 대괄호 [[]]
와 간단한 비교 연산자(예: ==
) 를 사용하세요.