เจฌเฉเจธเจผ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจจเฉเฉฐ เจกเฉเจฌเฉฑเจ เจเจฐเจจเจพ เจนเฉเจธเจเฉเจ เจตเจฟเฉฑเจ เจธเฉเจ เจฒเฉฑเจญเจฃ เจตเจพเจเจ เจนเฉ, เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจเจฆเฉเจ เจฎเฉเจเฉเจฆเจพ เจเฉเจกเจฌเฉเจธ เจตเจฟเฉฑเจ เจขเจพเจเจเฉ, เจฒเฉเจเจฟเฉฐเจ เจ เจคเฉ เจญเจฐเฉเจธเฉเจฏเฉเจเจคเจพ เจฆเฉ เจฎเฉเฉฑเจฆเจฟเจเจ 'เจคเฉ เจธเจฎเฉเจ เจธเจฟเจฐ เจตเจฟเจเจพเจฐ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ เจจเจตเฉเจ เจเฉเฉ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเจจเฅค เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจ เจเจฟเจนเฉเจเจ เจธเจฅเจฟเจคเฉเจเจ เจตเจฟเฉฑเจ เจเจพเจ เจคเจพเจ เจเจชเจฃเฉเจเจ เจเจฒเจคเฉเจเจ เจเจฐเจเฉ เจเจพเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฆเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจขเฉเจฐเจพเจ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจฒเฉฑเจญ เจธเจเจฆเฉ เจนเฉเฅค
เจฆเฉ เจเฉเจฎ
เจฒเฉเจ เจตเจฟเฉฑเจ, เจฒเฉเจเจ เจธเจพเจเจเจพ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจเจธเจจเฉ เจชเจฟเจเจฒเฉ เจเฉเจ เจธเจพเจฒเจพเจ เจตเจฟเฉฑเจ เจเฉ เจธเจฟเฉฑเจเจฟเจ เจนเฉ, เจจเจพเจฒ เจนเฉ เจเฉเจ เจเจฎ เจเจฒเจคเฉเจเจ เจเจฟเจจเฉเจนเจพเจ เจจเฉ เจเจธเจจเฉเฉฐ เจเจพเจฐเจก เจคเฉเจ เจฌเจพเจนเจฐ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉเฅค เจเจน เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ เจเจฟเจเจเจเจฟ เจนเจฐเฉเจ เจธเฉเจซเจเจตเฉเจ
เจฐ เจกเจฟเจตเฉเจฒเจชเจฐ, เจเจชเจฃเฉ เจเจฐเฉเจ
เจฐ เจฆเฉ เจเจฟเจธเฉ เจธเจฎเฉเจ, เจฐเฉเจเฉเจจ เจเฉฐเจฎ เจฆเฉ เจเฉฐเจฎเจพเจ เจจเฉเฉฐ เจธเจตเฉเจเจพเจฒเจค เจเจฐเจจ เจฒเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค
เจเฉเจฐเฉเจช เจนเฉเจเจกเจฒเจฐ
เจเจผเจฟเจเจฆเจพเจคเจฐ เจฌเฉเจธเจผ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจเจฟเจจเฉเจนเจพเจ เจฆเจพ เจฎเฉเจ เจธเจพเจนเจฎเจฃเจพ เจเฉเจคเจพ เจนเฉ เจเจน เจเจฆเฉ เจตเฉ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจธเจซเจพเจ เจตเจฟเจงเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเจจ เจเจฆเฉเจ เจธเจเฉเจฐเจฟเจชเจ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉเจฐเจพเจจ เจเฉเจ เจ เจฃเจเจฟเจเจธเจฟเจ เจตเจพเจชเจฐเจฆเจพ เจนเฉเฅค
เจฌเจพเจนเจฐเฉเจ เจนเฉเจฐเจพเจจเฉ เจชเฉเจฆเจพ เจนเฉ เจธเจเจฆเฉ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ เจเฉเจฐ เจคเฉเจ เจธเจฟเจเจจเจฒ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเจพเฅค เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจฟ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจเจคเจชเจพเจฆเจจ เจชเฉเจฐเจฃเจพเจฒเฉเจเจ 'เจคเฉ เจเฉฑเจฒเจฃ เจฒเจ เจเจพเจซเจผเฉ เจญเจฐเฉเจธเฉเจฎเฉฐเจฆ เจนเจจ, เจ เจเจฟเจนเฉ เจฎเจพเจฎเจฒเจฟเจเจ เจจเฉเฉฐ เจธเฉฐเจญเจพเจฒเจฃเจพ เจฌเจนเฉเจค เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉเฅค เจฎเฉเจ เจ เจเจธเจฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจฆเฉเจฐเจฟเจธเจผเจพเจ เจฆเจพ เจเจตเจพเจฌ เจฆเฉเจฃ เจฒเจ เจเจเจเจผเจฟเจ เจนเฉเจเจกเจฒเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเจพเจ:
function handle_exit() {
// Add cleanup code here
// for eg. rm -f "/tmp/${lock_file}.lock"
// exit with an appropriate status code
}
// trap <HANDLER_FXN> <LIST OF SIGNALS TO TRAP>
trap handle_exit 0 SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM
trap
เจเฉฑเจ เจธเจผเฉเฉฑเจฒ เจฌเจฟเจฒเจ-เจเจจ เจเจฎเจพเจเจก เจนเฉ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจเจฒเฉเจจเจ
เฉฑเจช เจซเฉฐเจเจธเจผเจจ เจฐเจเจฟเจธเจเจฐ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเจฆเฉ เจนเฉ เจเจฟเจธเจจเฉเฉฐ เจเจฟเจธเฉ เจตเฉ เจธเจฟเจเจจเจฒ เจฆเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจฌเฉเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจนเฉเจเจกเจฒเจฐเจพเจ เจจเจพเจฒ เจตเจฟเจธเจผเฉเจธเจผ เจงเจฟเจเจจ เจฐเฉฑเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเจฟเจตเฉเจ เจเจฟ SIGINT
, เจเฉ เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจ
เจงเฉเจฐเจพ เจเฉฑเจกเจฃ เจฆเจพ เจเจพเจฐเจจ เจฌเจฃเจฆเจพ เจนเฉเฅค
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจผเจฟเจเจฆเจพเจคเจฐ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ เจคเฉเจนเจพเจจเฉเฉฐ เจธเจฟเจฐเจซ เจซเฉเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ EXIT
, เจชเจฐ เจตเจฟเจเจพเจฐ เจเจน เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจ
เจธเจฒ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจตเจฟเจ
เจเจคเฉเจเจค เจธเจฟเจเจจเจฒ เจฒเจ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจตเจฟเจตเจนเจพเจฐ เจจเฉเฉฐ เจ
เจจเฉเจเฉเจฒเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจฌเจฟเจฒเจ-เจเจจ เจธเฉเฉฑเจ เจซเฉฐเจเจธเจผเจจ - เจเจฒเจคเฉ 'เจคเฉ เจคเฉเจเจผ เจธเจฎเจพเจชเจคเฉ
เจคเจฐเฉเฉฑเจเฉเจเจ เจฆเฉ เจตเจพเจชเจฐเจจ เจฆเฉ เจจเจพเจฒ เจนเฉ เจเจนเจจเจพเจ เจฆเจพ เจเจตเจพเจฌ เจฆเฉเจฃเจพ เจ เจคเฉ เจซเฉเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจฒเจพเจเฉ เจเจฐเจจเจพ เจฌเฉฐเจฆ เจเจฐเจจเจพ เจฌเจนเฉเจค เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉเฅค เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจเจฎเจพเจเจก เจเจฒเจพเจเจฃเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฃ เจจเจพเจฒเฉเจ เจเฉเจ เจตเฉ เจฎเจพเฉเจพ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเจพ:
rm -rf ${directory_name}/*
เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจงเจฟเจเจจ เจฆเจฟเจ เจเจฟ เจตเฉเจฐเฉเจเจฌเจฒ directory_name
เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉเจ เจเฉเจคเจพเฅค
เจ
เจเจฟเจนเฉ เจฆเฉเจฐเจฟเจธเจผเจพเจ เจจเฉเฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจ เจฌเจฟเจฒเจ-เจเจจ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ set
เจเจฟเจตเฉเจ เจเจฟ set -o errexit
, set -o pipefail
เจ set -o nounset
เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ. เจเจน เจซเฉฐเจเจธเจผเจจ เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจเจฆเฉ เจนเจจ เจเจฟ เจคเฉเจนเจพเจกเฉ เจธเจเฉเจฐเจฟเจชเจ เจเจฟเจตเฉเจ เจนเฉ เจเจฟเจธเฉ เจเฉเจฐ-เจเจผเฉเจฐเฉ เจเจเจเจผเจฟเจ เจเฉเจก เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเจฐเจฆเฉ เจนเฉ, เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ, เจเฉฑเจ เจชเจพเจเจช เจคเฉเจ เจ
เจตเฉเจง เจเจฎเจพเจเจกเจพเจ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเจฐเจฆเฉ เจนเฉ, เจ
เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจนเฉเจฐ:
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
function print_var() {
echo "${var_value}"
}
print_var
$ ./sample.sh
./sample.sh: line 8: var_value: unbound variable
เจจเฉเจ: เจฌเจฟเจฒเจ-เจเจจ เจซเฉฐเจเจธเจผเจจ เจเจฟเจตเฉเจ เจเจฟ set -o errexit
, เจเจฟเจตเฉเจ เจนเฉ "เจเฉฑเจเจพ" เจฐเจฟเจเจฐเจจ เจเฉเจก เจนเฉเฉฐเจฆเจพ เจนเฉ (เจเจผเฉเจฐเฉ เจคเฉเจ เจเจฒเจพเจตเจพ) เจธเจเฉเจฐเจฟเจชเจ เจคเฉเจ เจฌเจพเจนเจฐ เจ เจเจพเจตเฉเจเจพเฅค เจเจธ เจฒเจ เจเจธเจเจฎ เจเจฐเจฐ เจนเฉเจเจกเจฒเจฟเฉฐเจ เจจเฉเฉฐ เจชเฉเจธเจผ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ:
#!/bin/bash
error_exit() {
line=$1
shift 1
echo "ERROR: non zero return code from line: $line -- $@"
exit 1
}
a=0
let a++ || error_exit "$LINENO" "let operation returned non 0 code"
echo "you will never see me"
# run it, now we have useful debugging output
$ bash foo.sh
ERROR: non zero return code from line: 9 -- let operation returned non 0 code
เจธเจเฉเจฐเจฟเจชเจเจพเจ เจจเฉเฉฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจฒเจฟเจเจฃเจพ เจคเฉเจนเจพเจจเฉเฉฐ เจธเจเฉเจฐเจฟเจชเจ เจตเจฟเฉฑเจ เจธเจพเจฐเฉเจเจ เจเจฎเจพเจเจกเจพเจ เจฆเฉ เจตเจฟเจตเจนเจพเจฐ เจฌเจพเจฐเฉ เจตเจงเฉเจฐเฉ เจธเจพเจตเจงเจพเจจ เจฐเจนเจฟเจฃ เจฒเจ เจฎเจเจผเจฌเฉเจฐ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจนเฉเจฐเจพเจจ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเฉฑเจ เจเจฒเจคเฉ เจฆเฉ เจธเฉฐเจญเจพเจตเจจเจพ เจฆเจพ เจ เฉฐเจฆเจพเจเจผเจพ เจฒเจเจพเจเจเจฆเจพ เจนเฉเฅค
เจตเจฟเจเจพเจธ เจฆเฉเจฐเจพเจจ เจเจฒเจคเฉเจเจ เจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจฃ เจฒเจ ShellCheck
เจเจน เจตเจฐเจเจพ เจเฉเจ เจเจเฉเจเฉเจฐเจฟเจค เจเจฐเจจ เจฏเฉเจ เจนเฉ
เจฎเฉเจ เจเจธเจจเฉเฉฐ เจเจชเจฃเฉ เจธเจฅเจพเจจเจ เจตเจฟเจเจพเจธ เจตเจพเจคเจพเจตเจฐเจฃเจพเจ เจตเจฟเฉฑเจ เจธเฉฐเจเฉเจเจธ, เจธเจฟเจฎเฉเจเจเจฟเจเจธ, เจ เจคเฉ เจเฉเจก เจตเจฟเฉฑเจ เจเฉเจ เจเจฒเจคเฉเจเจ เจฌเจพเจฐเฉ เจฐเจฟเจชเฉเจฐเจเจพเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจตเจฐเจคเจฆเจพ เจนเจพเจ เจเฉ เจธเจผเจพเจเจฆ เจฎเฉเจ เจตเจฟเจเจพเจธ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจเฉเฉฐเจ เจเจฟเจ เจนเฉเจตเฉเฅค เจเจน เจคเฉเจนเจพเจกเฉเจเจ เจฌเฉเจธเจผ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฒเจ เจเฉฑเจ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเฉเจฒ เจนเฉ เจ เจคเฉ เจฎเฉเจ เจเจธเจจเฉเฉฐ เจตเจฐเจคเจฃ เจฆเฉ เจเจผเฉเจฐเจฆเจพเจฐ เจธเจฟเจซเจพเจฐเจธเจผ เจเจฐเจฆเจพ เจนเจพเจ.
เจเจชเจฃเฉ เจเฉเจฆ เจฆเฉ เจเจเจเจผเจฟเจ เจเฉเจกเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ
POSIX เจตเจฟเฉฑเจ เจฐเจฟเจเจฐเจจ เจเฉเจก เจธเจฟเจฐเจซเจผ เจเจผเฉเจฐเฉ เจเจพเจ เจเฉฑเจ เจจเจนเฉเจ เจนเจจ, เจฌเจฒเจเจฟ เจเจผเฉเจฐเฉ เจเจพเจ เจเฉฑเจ เจเฉเจฐ-เจเจผเฉเจฐเฉ เจฎเฉเฉฑเจฒ เจนเจจเฅค เจตเฉฑเจ-เจตเฉฑเจ เจคเจฐเฉเจเฉ เจฎเจพเจฎเจฒเจฟเจเจ เจฒเจ เจเจธเจเจฎ เจเจฐเจฐ เจเฉเจก (201-254 เจฆเฉ เจตเจฟเจเจเจพเจฐ) เจตเจพเจชเจธ เจเจฐเจจ เจฒเจ เจเจนเจจเจพเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเฅค
เจเจน เจเจพเจฃเจเจพเจฐเฉ เจซเจฟเจฐ เจนเฉเจฐ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฆเฉเจเจฐเจพ เจตเจฐเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจธเจฎเจเจฃ เจฒเจ เจฒเจชเฉเจเจฆเฉเจเจ เจนเจจ เจเจฟ เจเจฟเจธ เจเจฟเจธเจฎ เจฆเฉ เจเจฒเจคเฉ เจเจ เจนเฉ เจ เจคเฉ เจเจธ เจ เจจเฉเจธเจพเจฐ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจ เจเจฐเฉ:
#!/usr/bin/env bash
SUCCESS=0
FILE_NOT_FOUND=240
DOWNLOAD_FAILED=241
function read_file() {
if ${file_not_found}; then
return ${FILE_NOT_FOUND}
fi
}
เจจเฉเจ: เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจเจนเจจเจพเจ เจตเฉเจฐเฉเจเจฌเจฒ เจจเจพเจตเจพเจ เจจเจพเจฒ เจธเจพเจตเจงเจพเจจ เจฐเจนเฉ เจเฉ เจคเฉเจธเฉเจ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจฆเฉ เจนเฉ เจคเจพเจ เจเฉ เจ เจเจพเจจเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจจเฉเฉฐ เจเจตเจฐเจฐเจพเจเจก เจเจฐเจจ เจคเฉเจ เจฌเจเจฟเจ เจเจพ เจธเจเฉเฅค
เจฒเฉเจเจฟเฉฐเจ เจซเฉฐเจเจธเจผเจจ
เจคเฉเจนเจพเจกเฉ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจจเจคเฉเจเจฟเจเจ เจจเฉเฉฐ เจเจธเจพเจจเฉ เจจเจพเจฒ เจธเจฎเจเจฃ เจฒเจ เจธเฉเฉฐเจฆเจฐ เจ
เจคเฉ เจขเจพเจเจเจพเจเจค เจฒเฉเจเจฟเฉฐเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉเฅค เจเจฟเจตเฉเจ เจเจฟ เจนเฉเจฐ เจเฉฑเจ-เจชเฉฑเจงเจฐเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจญเจพเจธเจผเจพเจตเจพเจ เจฆเฉ เจจเจพเจฒ, เจฎเฉเจ เจนเจฎเฉเจธเจผเจพ เจเจชเจฃเฉเจเจ เจฌเฉเจธเจผ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจตเจฟเฉฑเจ เจจเฉเจเจฟเจต เจฒเฉเจเจฟเฉฐเจ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเจพเจ, เจเจฟเจตเฉเจ เจเจฟ __msg_info
, __msg_error
เจ
เจคเฉ เจเจธ 'เจคเฉ.
เจเจน เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจฅเจพเจ 'เจคเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจเฉ เจเฉฑเจ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจฒเฉเจเจฟเฉฐเจ เจขเจพเจเจเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเจฆเจพ เจนเฉ:
#!/usr/bin/env bash
function __msg_error() {
[[ "${ERROR}" == "1" ]] && echo -e "[ERROR]: $*"
}
function __msg_debug() {
[[ "${DEBUG}" == "1" ]] && echo -e "[DEBUG]: $*"
}
function __msg_info() {
[[ "${INFO}" == "1" ]] && echo -e "[INFO]: $*"
}
__msg_error "File could not be found. Cannot proceed"
__msg_debug "Starting script execution with 276MB of available RAM"
เจฎเฉเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจชเจฃเฉเจเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจเจฟเจธเจฎ เจฆเฉ เจตเจฟเจงเฉ เจฐเฉฑเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเจพ เจนเจพเจ __init
, เจเจฟเฉฑเจฅเฉ เจ
เจเจฟเจนเฉ เจฒเจพเจเจฐ เจตเฉเจฐเฉเจเจฌเจฒ เจ
เจคเฉ เจนเฉเจฐ เจธเจฟเจธเจเจฎ เจตเฉเจฐเฉเจเจฌเจฒ เจธเจผเฉเจฐเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจ เจเจพเจ เจกเจฟเจซเฉเจฒเจ เจฎเฉเฉฑเจฒเจพเจ 'เจคเฉ เจธเฉเฉฑเจ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจเจน เจตเฉเจฐเฉเจเจฌเจฒ เจธเจเฉเจฐเจฟเจชเจ เจเจจเจตเฉเจเฉเจธเจผเจจ เจฆเฉเจฐเจพเจจ เจเจฎเจพเจเจก เจฒเจพเจเจจ เจตเจฟเจเจฒเจชเจพเจ เจคเฉเจ เจตเฉ เจธเฉเฉฑเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจเฅค
เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉเจ เจ เจเจฟเจนเจพ:
$ ./run-script.sh --debug
เจเจฆเฉเจ เจ เจเจฟเจนเฉ เจธเจเฉเจฐเจฟเจชเจ เจเจฒเจพเจ เจเจพเจเจฆเฉ เจนเฉ, เจคเจพเจ เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ เจเจฟ เจธเจฟเจธเจเจฎ-เจตเจฟเจเจชเจ เจธเฉเจเจฟเฉฐเจเจพเจ เจจเฉเฉฐ เจกเจฟเจซเฉเจฒเจ เจฎเฉเฉฑเจฒเจพเจ 'เจคเฉ เจธเฉเฉฑเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจเฉเจเจฐ เจเจน เจฒเฉเฉเฉเจเจฆเฉ เจนเจจ, เจเจพเจ เจเฉฑเจเฉ-เจเฉฑเจ เจฒเฉเฉ เจชเฉเจฃ 'เจคเฉ เจเจฟเจธเฉ เจขเฉเจเจตเฉเจ เจเฉเจเจผ เจฒเจ เจธเจผเฉเจฐเฉ เจเฉเจคเฉเจเจ เจเจเจเจ เจนเจจเฅค
เจฎเฉเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจชเจญเฉเจเจคเจพ เจเฉฐเจเจฐเจซเฉเจธ เจ เจคเฉ เจเจนเจจเจพเจ เจธเฉฐเจฐเจเจจเจพเจตเจพเจ เจฆเฉ เจตเฉเจฐเจตเจฟเจเจ เจฆเฉ เจตเจฟเจเจเจพเจฐ เจเฉฑเจ เจตเจชเจพเจฐ-เจเจซ 'เจคเฉ เจเฉ เจธเจผเฉเจฐเฉ เจเจฐเจจเจพ เจนเฉ เจ เจคเฉ เจเฉ เจจเจนเฉเจ เจเจฐเจจเจพ เจนเฉ เจฆเฉ เจเฉเจฃ เจจเฉเฉฐ เจ เจงเจพเจฐ เจฌเจฃเจพเจเจเจฆเจพ เจนเจพเจ เจเฉ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจเฉเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจฎเฉเฉ เจตเจฐเจคเฉเจ เจ เจคเฉ เจธเจพเจซเจผ เจธเจฟเจธเจเจฎ เจธเจฅเจฟเจคเฉ เจฒเจ เจเจฐเจเฉเจเฉเจเจเจฐ
เจฎเจพเจกเจฏเฉเจฒเจฐ/เจฎเฉเฉ เจตเจฐเจคเฉเจ เจฏเฉเจ เจเฉเจก
โโโ framework
โ โโโ common
โ โ โโโ loggers.sh
โ โ โโโ mail_reports.sh
โ โ โโโ slack_reports.sh
โ โโโ daily_database_operation.sh
เจฎเฉเจ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฐเฉฑเจเจฆเจพ เจนเจพเจ เจเจฟเจธเจฆเฉ เจตเจฐเจคเฉเจ เจฎเฉเจ เจเฉฑเจ เจจเจตเฉเจ เจชเฉเจฐเฉเจเฉเจเจ/เจฌเจพเจธเจผ เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ เจเจฐ เจธเจเจฆเจพ เจนเจพเจ เจเฉ เจฎเฉเจ เจตเจฟเจเจธเจค เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจเฅค เจเฉเจ เจตเฉ เจเฉเจเจผ เจเฉ เจฆเฉเจฌเจพเจฐเจพ เจตเจฐเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ เจเฉฑเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจฆเฉเจเฉ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจฆเฉเจเจฐเจพ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ เจเฉ เจเจธ เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ เจจเฉเฉฐ เจตเจฐเจคเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจจเฉเฉฐ เจเจธ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจเจพ เจฆเฉเจเฉเจเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฆเฉ เจเจเจพเจฐ เจจเฉเฉฐ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจคเฉเจฐ 'เจคเฉ เจเจเจพเจเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจน เจตเฉ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ เจเจฟ เจเฉเจก เจฌเฉเจธ เจเฉเจเจพ เจนเฉ เจ เจคเฉ เจเฉเจธเจ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉเฅค
เจเจฟเจตเฉเจ เจเจฟ เจเจชเจฐเฉเจเจค เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, เจธเจพเจฐเฉ เจฒเฉเจเจฟเฉฐเจ เจซเฉฐเจเจธเจผเจจ เจเจฟเจตเฉเจ เจเจฟ __msg_info
, __msg_error
เจ
เจคเฉ เจนเฉเจฐ, เจเจฟเจตเฉเจ เจเจฟ เจธเจฒเฉเจ เจฐเจฟเจชเฉเจฐเจเจพเจ, เจตเจฟเฉฑเจ เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจธเจผเจพเจฎเจฒ เจนเจจ common/*
เจ
เจคเฉ เจนเฉเจฐ เจฆเฉเจฐเจฟเจธเจผเจพเจ เจตเจฟเฉฑเจ เจเจคเฉเจธเจผเฉเจฒ เจคเฉเจฐ 'เจคเฉ เจเฉเฉเฉ เจเจฟเจตเฉเจ เจเจฟ daily_database_operation.sh
.
เจเฉฑเจ เจธเจพเจซเจผ เจธเจฟเจธเจเจฎ เจจเฉเฉฐ เจชเจฟเฉฑเจเฉ เจเฉฑเจกเฉ
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจเฉฑเจฒเจฆเฉ เจธเจฎเฉเจ เจเฉเจ เจตเฉ เจธเจฐเฉเจค เจฒเฉเจก เจเจฐ เจฐเจนเฉ เจนเฉ, เจคเจพเจ เจเจน เจธเจฟเจซเจพเจฐเจธเจผ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเจฟ เจ
เจเจฟเจนเฉ เจธเจพเจฐเฉ เจกเฉเจเจพ เจจเฉเฉฐ เจเฉฑเจ เจธเจผเฉเจ
เจฐเจก เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจฌเฉเจคเจฐเจคเฉเจฌ เจจเจพเจฎ เจจเจพเจฒ เจธเจเฉเจฐ เจเจฐเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ. /tmp/AlRhYbD97/*
. เจคเฉเจธเฉเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฆเจพ เจจเจพเจฎ เจเฉเจฃเจจ เจฒเจ เจฌเฉเจคเจฐเจคเฉเจฌ เจเฉเจเจธเจ เจเจจเจฐเฉเจเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ:
rand_dir_name="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1)"
เจเฉฐเจฎ เจชเฉเจฐเจพ เจนเฉเจฃ เจคเฉเจ เจฌเจพเจ เจฆ, เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจนเฉเฉฑเจ เจนเฉเจเจกเจฒเจฐ เจตเจฟเฉฑเจ เจ เจเจฟเจนเฉเจเจ เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ เจฆเฉ เจธเจซเจพเจ เจชเฉเจฐเจฆเจพเจจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉเฅค เจเฉเจเจฐ เจ เจธเจฅเจพเจ เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ เจฆเจพ เจงเจฟเจเจจ เจจเจนเฉเจ เจฐเฉฑเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจเจน เจเจเฉฑเจ เฉเจเจ เจนเฉ เจเจพเจเจฆเฉเจเจ เจนเจจ เจ เจคเฉ เจเจฟเจธเฉ เจชเฉเจพเจ 'เจคเฉ เจนเฉเจธเจ 'เจคเฉ เจ เจเจพเจจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจชเฉเจฆเจพ เจเจฐเจฆเฉเจเจ เจนเจจ, เจเจฟเจตเฉเจ เจเจฟ เจชเฉเจฐเฉ เจกเจฟเจธเจเฅค
เจฒเจพเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ
เจ เจเจธเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจเจฟ เจเจฟเจธเฉ เจตเฉ เจธเจฎเฉเจ 'เจคเฉ เจนเฉเจธเจ 'เจคเฉ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจเจฆเจพเจนเจฐเจจ เจเฉฑเจฒ เจฐเจนเฉ เจนเฉเฅค เจเจน เจฒเจพเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ.
เจฎเฉเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจฒเจพเจ เจซเจพเจเจฒเจพเจ เจฌเจฃเจพเจเจเจฆเจพ เจนเจพเจ /tmp/project_name/*.lock
เจ
เจคเฉ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจเจนเจจเจพเจ เจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจฆเฉ เจเจพเจเจ เจเจฐเฉเฅค เจเจน เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจธเจผเจพเจจเจฆเจพเจฐ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจธเจฎเจพเจชเจค เจเจฐเจจ เจ
เจคเฉ เจธเจฎเจพเจจเจพเจเจคเจฐ เจตเจฟเฉฑเจ เจเฉฑเจฒ เจฐเจนเฉ เจเฉฑเจ เจนเฉเจฐ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉเจเจฐเจพ เจธเจฟเจธเจเจฎ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจ
เจเจพเจจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจคเฉเจ เจฌเจเจฃ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเจฆเจพ เจนเฉเฅค เจฒเจพเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ เจเฉเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเจฟเฉฑเจคเฉ เจเจ เจนเฉเจธเจ 'เจคเฉ เจธเจฎเจพเจจเจพเจเจคเจฐ เจคเฉเจฐ 'เจคเฉ เจเฉฑเจฒเจฃ เจฒเจ เจเฉฑเจเฉ เจธเจเฉเจฐเจฟเจชเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจฎเจพเจชเฉ เจ เจคเฉ เจธเฉเจงเจพเจฐ เจเจฐเฉ
เจธเจพเจจเฉเฉฐ เจ เจเจธเจฐ เจเจนเจจเจพเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจเฉ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจคเฉฑเจ เจเฉฑเจฒเจฆเฉเจเจ เจนเจจ, เจเจฟเจตเฉเจ เจเจฟ เจฐเฉเจเจผเจพเจจเจพ เจกเจพเจเจพเจฌเฉเจธ เจเจชเจฐเฉเจธเจผเจจเฅค เจ เจเจฟเจนเฉ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจตเจฟเฉฑเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจฆเจฎเจพเจ เจฆเจพ เจเฉเจฐเจฎ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉ: เจกเฉเจเจพ เจฒเฉเจก เจเจฐเจจเจพ, เจตเจฟเจเจพเฉเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ, เจกเฉเจเจพ เจเจฏเจพเจค เจเจฐเจจเจพ, เจธเจฅเจฟเจคเฉ เจฐเจฟเจชเฉเจฐเจเจพเจ เจญเฉเจเจฃเจพ, เจเจฆเจฟเฅค
เจ เจเจฟเจนเฉ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ, เจฎเฉเจ เจนเจฎเฉเจธเจผเจพ เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจตเฉฑเจ-เจตเฉฑเจ เจเฉเจเฉเจเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจตเจฟเฉฑเจ เจคเฉเฉเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเจพ เจนเจพเจ เจ เจคเฉ เจเจนเจจเจพเจ เจฆเฉ เจธเจฅเจฟเจคเฉ เจ เจคเฉ เจฒเจพเจเฉ เจนเฉเจฃ เจฆเฉ เจธเจฎเฉเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฐเจฟเจชเฉเจฐเจ เจเจฐเจฆเจพ เจนเจพเจ:
time source "${filepath}" "${args}">> "${LOG_DIR}/RUN_LOG" 2>&1
เจฌเจพเจ เจฆ เจตเจฟเฉฑเจ เจฎเฉเจ เจเจธ เจจเจพเจฒ เจเฉฑเจฒเจฃ เจฆเจพ เจธเจฎเจพเจ เจฆเฉเจ เจธเจเจฆเจพ เจนเจพเจ:
tac "${LOG_DIR}/RUN_LOG.txt" | grep -m1 "real"
เจเจน เจธเจเฉเจฐเจฟเจชเจเจพเจ เจตเจฟเฉฑเจ เจธเจฎเฉฑเจธเจฟเจ/เจนเฉเจฒเฉ เจเฉเจคเจฐเจพเจ เจฆเฉ เจชเจเจพเจฃ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเฉเจฐเฉ เจฎเจฆเจฆ เจเจฐเจฆเจพ เจนเฉ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจ เจจเฉเจเฉเจฒเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค
เจเฉฐเจเฉ เจเจฟเจธเจฎเจค!
เจนเฉเจฐ เจเฉ เจชเฉเฉเจนเจจเจพ เจนเฉ:
เจเจพเจ เจ เจคเฉ GPU เจเฉเจธเจผ. Mail.ru เจเจฒเจพเจเจก เจธเฉเจฒเจฟเจเจธเจผเจจเจเจผ เจฆเฉ S3 เจเจฌเจเฉเจเจ เจธเจเฉเจฐเฉเจ เจตเจฟเฉฑเจ เจตเฉเจฌเจนเฉเฉฑเจ 'เจคเฉ เจเจงเจพเจฐเจฟเจค เจเฉฑเจ เจเจตเฉเจเจ-เจธเฉฐเจเจพเจฒเจฟเจค เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจจเฅค เจกเจฟเจเฉเจเจฒ เจชเจฐเจฟเจตเจฐเจคเจจ เจฌเจพเจฐเฉ เจธเจพเจกเจพ เจเฉเจฒเฉเจเฉเจฐเจพเจฎ เจเฉเจจเจฒเฅค
เจธเจฐเฉเจค: www.habr.com