shell共通関数類
shellでバッチ処理する際に利用する事がありそうな記述の備忘録
関数を利用しているshell
※いま使っている関数類に合わせ整理し他の重複記事は削除してここに集約
bash用共通関数
set color
高輝度のものに変更
set color
declare -r TXT_RESET='\033[m' # reset all attributes
declare -r TXT_ULINE='\033[4m' # set underline
declare -r TXT_ULINERST='\033[24m' # reset underline
declare -r TXT_REV='\033[7m' # set reverse display
declare -r TXT_REVRST='\033[27m' # reset reverse display
declare -r TXT_BLACK='\033[90m' # text black
declare -r TXT_RED='\033[91m' # text red
declare -r TXT_GREEN='\033[92m' # text green
declare -r TXT_YELLOW='\033[93m' # text yellow
declare -r TXT_BLUE='\033[94m' # text blue
declare -r TXT_MAGENTA='\033[95m' # text purple
declare -r TXT_CYAN='\033[96m' # text light blue
declare -r TXT_WHITE='\033[97m' # text white
declare -r TXT_BBLACK='\033[40m' # text reverse black
declare -r TXT_BRED='\033[41m' # text reverse red
declare -r TXT_BGREEN='\033[42m' # text reverse green
declare -r TXT_BYELLOW='\033[43m' # text reverse yellow
declare -r TXT_BBLUE='\033[44m' # text reverse blue
declare -r TXT_BMAGENTA='\033[45m' # text reverse purple
declare -r TXT_BCYAN='\033[46m' # text reverse light blue
declare -r TXT_BWHITE='\033[47m' # text reverse white
text color test
funcColorTest
function funcColorTest() {
printf "${TXT_RESET} : %-12.12s : ${TXT_RESET}\n" "TXT_RESET"
printf "${TXT_ULINE} : %-12.12s : ${TXT_RESET}\n" "TXT_ULINE"
printf "${TXT_ULINERST} : %-12.12s : ${TXT_RESET}\n" "TXT_ULINERST"
# printf "${TXT_BLINK} : %-12.12s : ${TXT_RESET}\n" "TXT_BLINK"
# printf "${TXT_BLINKRST} : %-12.12s : ${TXT_RESET}\n" "TXT_BLINKRST"
printf "${TXT_REV} : %-12.12s : ${TXT_RESET}\n" "TXT_REV"
printf "${TXT_REVRST} : %-12.12s : ${TXT_RESET}\n" "TXT_REVRST"
printf "${TXT_BLACK} : %-12.12s : ${TXT_RESET}\n" "TXT_BLACK"
printf "${TXT_RED} : %-12.12s : ${TXT_RESET}\n" "TXT_RED"
printf "${TXT_GREEN} : %-12.12s : ${TXT_RESET}\n" "TXT_GREEN"
printf "${TXT_YELLOW} : %-12.12s : ${TXT_RESET}\n" "TXT_YELLOW"
printf "${TXT_BLUE} : %-12.12s : ${TXT_RESET}\n" "TXT_BLUE"
printf "${TXT_MAGENTA} : %-12.12s : ${TXT_RESET}\n" "TXT_MAGENTA"
printf "${TXT_CYAN} : %-12.12s : ${TXT_RESET}\n" "TXT_CYAN"
printf "${TXT_WHITE} : %-12.12s : ${TXT_RESET}\n" "TXT_WHITE"
printf "${TXT_BBLACK} : %-12.12s : ${TXT_RESET}\n" "TXT_BBLACK"
printf "${TXT_BRED} : %-12.12s : ${TXT_RESET}\n" "TXT_BRED"
printf "${TXT_BGREEN} : %-12.12s : ${TXT_RESET}\n" "TXT_BGREEN"
printf "${TXT_BYELLOW} : %-12.12s : ${TXT_RESET}\n" "TXT_BYELLOW"
printf "${TXT_BBLUE} : %-12.12s : ${TXT_RESET}\n" "TXT_BBLUE"
printf "${TXT_BMAGENTA} : %-12.12s : ${TXT_RESET}\n" "TXT_BMAGENTA"
printf "${TXT_BCYAN} : %-12.12s : ${TXT_RESET}\n" "TXT_BCYAN"
printf "${TXT_BWHITE} : %-12.12s : ${TXT_RESET}\n" "TXT_BWHITE"
}
diff
funcDiff
function funcDiff() {
if [[ ! -f "$1" ]] || [[ ! -f "$2" ]]; then
return
fi
funcPrintf "$3"
diff -y -W "${COLS_SIZE}" --suppress-common-lines "$1" "$2" || true
}
substr
funcSubstr
function funcSubstr() {
echo "$1" | awk '{print substr($0,'"$2"','"$3"');}'
}
IPv6 full address
funcIPv6GetFullAddr
function funcIPv6GetFullAddr() {
# declare -r OLD_IFS="${IFS}"
declare INP_ADDR="$1"
declare -r STR_FSEP="${INP_ADDR//[^:]}"
declare -r -i CNT_FSEP=$((7-${#STR_FSEP}))
declare -a OUT_ARRY=()
declare OUT_TEMP=""
if [[ "${CNT_FSEP}" -gt 0 ]]; then
OUT_TEMP="$(eval printf ':%.s' "{1..$((CNT_FSEP+2))}")"
INP_ADDR="${INP_ADDR/::/${OUT_TEMP}}"
fi
IFS=':'
# shellcheck disable=SC2206
OUT_ARRY=(${INP_ADDR/%:/::})
IFS=${OLD_IFS}
OUT_TEMP="$(printf ':%04x' "${OUT_ARRY[@]/#/0x0}")"
echo "${OUT_TEMP:1}"
}
IPv6 reverse address
funcIPv6GetRevAddr
function funcIPv6GetRevAddr() {
declare -r INP_ADDR="$1"
echo "${INP_ADDR//:/}" | \
awk '{for(i=length();i>1;i--) \
printf("%c.", substr($0,i,1)); \
printf("%c" , substr($0,1,1));}'
}
IPv4 netmask conversion
funcIPv4GetNetmask
function funcIPv4GetNetmask() {
declare -r INP_ADDR="$1"
# declare DEC_ADDR="$((0xFFFFFFFF ^ (2**(32-INP_ADDR)-1)))"
declare -i LOOP=$((32-INP_ADDR))
declare -i WORK=1
declare DEC_ADDR=""
while [[ "${LOOP}" -gt 0 ]]
do
LOOP=$((LOOP-1))
WORK=$((WORK*2))
done
DEC_ADDR="$((0xFFFFFFFF ^ (WORK-1)))"
printf '%d.%d.%d.%d' \
$(( DEC_ADDR >> 24 )) \
$(((DEC_ADDR >> 16) & 0xFF)) \
$(((DEC_ADDR >> 8) & 0xFF)) \
$(( DEC_ADDR & 0xFF))
}
IPv4 cidr conversion
funcIPv4GetNetCIDR
function funcIPv4GetNetCIDR() {
declare -r INP_ADDR="$1"
#declare -a OCTETS=()
#declare -i MASK=0
echo "${INP_ADDR}" | \
awk -F '.' '{
split($0, OCTETS);
for (I in OCTETS) {
MASK += 8 - log(2^8 - OCTETS[I])/log(2);
}
print MASK
}'
}
is numeric
funcIsNumeric
function funcIsNumeric() {
if [[ ${1:-} =~ ^-?[0-9]+\.?[0-9]*$ ]]; then
echo 0
else
echo 1
fi
}
string output
funcString
function funcString() {
# declare -r OLD_IFS="${IFS}"
IFS=$'\n'
if [[ "$1" -le 0 ]]; then
echo ""
else
if [[ "$2" = " " ]]; then
echo "" | awk '{s=sprintf("%'"$1"'.'"$1"'s"," "); print s;}'
else
echo "" | awk '{s=sprintf("%'"$1"'.'"$1"'s"," "); gsub(" ","'"$2"'",s); print s;}'
fi
fi
IFS="${OLD_IFS}"
}
print with screen control
funcPrintf
function funcPrintf() {
# declare -r SET_ENV_E="$(set -o | awk '$1=="errexit" {print $2;}')"
declare -r SET_ENV_X="$(set -o | awk '$1=="xtrace" {print $2;}')"
set +x
# https://www.tohoho-web.com/ex/dash-tilde.html
# declare -r OLD_IFS="${IFS}"
# declare -i RET_CD=0
declare FLAG_CUT=""
declare TEXT_FMAT=""
declare -r CTRL_ESCP=$'\033['
declare PRNT_STR=""
declare SJIS_STR=""
declare TEMP_STR=""
declare WORK_STR=""
declare -i CTRL_CNT=0
declare -i MAX_COLS="${COLS_SIZE:-80}"
# -------------------------------------------------------------------------
IFS=$'\n'
if [[ "$1" = "--no-cutting" ]]; then # no cutting print
FLAG_CUT="true"
shift
fi
if [[ "$1" =~ %[0-9.-]*[diouxXfeEgGcs]+ ]]; then
# shellcheck disable=SC2001
TEXT_FMAT="$(echo "$1" | sed -e 's/%\([0-9.-]*\)s/%\1b/g')"
shift
fi
# shellcheck disable=SC2059
PRNT_STR="$(printf "${TEXT_FMAT:-%b}" "${@:-}")"
if [[ -z "${FLAG_CUT}" ]]; then
SJIS_STR="$(echo -n "${PRNT_STR:-}" | iconv -f UTF-8 -t CP932)"
TEMP_STR="$(echo -n "${SJIS_STR}" | sed -e "s/${CTRL_ESCP}[0-9]*m//g")"
if [[ "${#TEMP_STR}" -gt "${MAX_COLS}" ]]; then
CTRL_CNT=$((${#SJIS_STR}-${#TEMP_STR}))
WORK_STR="$(echo -n "${SJIS_STR}" | cut -b $((MAX_COLS+CTRL_CNT))-)"
TEMP_STR="$(echo -n "${WORK_STR}" | sed -e "s/${CTRL_ESCP}[0-9]*m//g")"
MAX_COLS+=$((CTRL_CNT-(${#WORK_STR}-${#TEMP_STR})))
# shellcheck disable=SC2312
if ! PRNT_STR="$(echo -n "${SJIS_STR:-}" | cut -b -"${MAX_COLS}" | iconv -f CP932 -t UTF-8 2> /dev/null)"; then
PRNT_STR="$(echo -n "${SJIS_STR:-}" | cut -b -$((MAX_COLS-1)) | iconv -f CP932 -t UTF-8 2> /dev/null) "
fi
fi
fi
printf "%b\n" "${PRNT_STR:-}"
IFS="${OLD_IFS}"
# -------------------------------------------------------------------------
if [[ "${SET_ENV_X}" = "on" ]]; then
set -x
else
set +x
fi
# if [[ "${SET_ENV_E}" = "on" ]]; then
# set -e
# else
# set +e
# fi
}
unit conversion
funcUnit_conversion
function funcUnit_conversion() {
# declare -r OLD_IFS="${IFS}"
declare -r -a TEXT_UNIT=("Byte" "KiB" "MiB" "GiB" "TiB")
declare -i CALC_UNIT=0
declare -i I=0
if [[ "$1" -lt 1024 ]]; then
printf "%'d Byte" "$1"
return
fi
for ((I=3; I>0; I--))
do
CALC_UNIT=$((1024**I))
if [[ "$1" -ge "${CALC_UNIT}" ]]; then
# shellcheck disable=SC2312
printf "%s %s" "$(echo "$1" "${CALC_UNIT}" | awk '{printf("%.1f", $1/$2)}')" "${TEXT_UNIT[${I}]}"
return
fi
done
echo -n "$1"
}
download
funcCurl
function funcCurl() {
# declare -r OLD_IFS="${IFS}"
declare -i RET_CD=0
declare -i I
# shellcheck disable=SC2155
declare INP_URL="$(echo "$@" | sed -ne 's%^.* \(\(http\|https\)://.*\)$%\1%p')"
# shellcheck disable=SC2155
declare OUT_DIR="$(echo "$@" | sed -ne 's%^.* --output-dir *\(.*\) .*$%\1%p' | sed -e 's%/$%%')"
# shellcheck disable=SC2155
declare OUT_FILE="$(echo "$@" | sed -ne 's%^.* --output *\(.*\) .*$%\1%p' | sed -e 's%/$%%')"
declare -a ARY_HED=("")
declare ERR_MSG=""
declare WEB_SIZ=""
declare WEB_TIM=""
declare WEB_FIL=""
declare LOC_INF=""
declare LOC_SIZ=""
declare LOC_TIM=""
declare TXT_SIZ=""
# declare -i INT_SIZ
# declare -i INT_UNT
# declare -a TXT_UNT=("Byte" "KiB" "MiB" "GiB" "TiB")
# set +e
# ARY_HED=("$(curl --location --http1.1 --no-progress-bar --head --remote-time --show-error --silent --fail --retry-max-time 3 --retry 3 "${INP_URL}" 2> /dev/null)")
# RET_CD=$?
# set -e
# if [[ "${RET_CD}" -eq 6 ]] || [[ "${RET_CD}" -eq 18 ]] || [[ "${RET_CD}" -eq 22 ]] || [[ "${RET_CD}" -eq 28 ]] || [[ "${RET_CD}" -eq 35 ]] || [[ "${#WEBS_PAGE[@]}" -le 0 ]]; then
# if [[ "${RET_CD}" -ne 0 ]] || [[ "${#ARY_HED[@]}" -le 0 ]]; then
# ERR_MSG=$(echo "${ARY_HED[@]}" | sed -ne '/^HTTP/p' | sed -e 's/\r\n*/\n/g' -ze 's/\n//g')
# echo -e "${ERR_MSG} [${RET_CD}]: ${INP_URL}"
# return "${RET_CD}"
# fi
if ! ARY_HED=("$(curl --location --http1.1 --no-progress-bar --head --remote-time --show-error --silent --fail --retry-max-time 3 --retry 3 "${INP_URL}" 2> /dev/null)"); then
RET_CD="$?"
ERR_MSG=$(echo "${ARY_HED[@]}" | sed -ne '/^HTTP/p' | sed -e 's/\r\n*/\n/g' -ze 's/\n//g')
# echo -e "${ERR_MSG} [${RET_CD}]: ${INP_URL}"
printf "%s\n" "${ERR_MSG} [${RET_CD}]: ${INP_URL}"
return "${RET_CD}"
fi
WEB_SIZ=$(echo "${ARY_HED[@],,}" | sed -ne '/http\/.* 200/,/^$/ s/'$'\r''//gp' | sed -ne '/content-length:/ s/.*: //p')
# shellcheck disable=SC2312
WEB_TIM=$(TZ=UTC date -d "$(echo "${ARY_HED[@],,}" | sed -ne '/http\/.* 200/,/^$/ s/'$'\r''//gp' | sed -ne '/last-modified:/ s/.*: //p')" "+%Y%m%d%H%M%S")
WEB_FIL="${OUT_DIR:-.}/${INP_URL##*/}"
if [[ -n "${OUT_DIR}" ]] && [[ ! -d "${OUT_DIR}/." ]]; then
mkdir -p "${OUT_DIR}"
fi
if [[ -n "${OUT_FILE}" ]] && [[ -f "${OUT_FILE}" ]]; then
WEB_FIL="${OUT_FILE}"
fi
if [[ -n "${WEB_FIL}" ]] && [[ -f "${WEB_FIL}" ]]; then
LOC_INF=$(TZ=UTC ls -lL --time-style="+%Y%m%d%H%M%S" "${WEB_FIL}")
LOC_TIM=$(echo "${LOC_INF}" | awk '{print $6;}')
LOC_SIZ=$(echo "${LOC_INF}" | awk '{print $5;}')
if [[ "${WEB_TIM:-0}" -eq "${LOC_TIM:-0}" ]] && [[ "${WEB_SIZ:-0}" -eq "${LOC_SIZ:-0}" ]]; then
funcPrintf "same file: ${WEB_FIL}"
return
fi
fi
TXT_SIZ="$(funcUnit_conversion "${WEB_SIZ}")"
# if [[ "${WEB_SIZ}" -lt 1024 ]]; then
# TXT_SIZ="$(printf "%'d Byte" "${WEB_SIZ}")"
# else
# for ((I=3; I>0; I--))
# do
# INT_UNT=$((1024**I))
# if [[ "${WEB_SIZ}" -ge "${INT_UNT}" ]]; then
# TXT_SIZ="$(echo "${WEB_SIZ}" "${INT_UNT}" | awk '{printf("%.1f", $1/$2)}') ${TXT_UNT[${I}]})"
## INT_SIZ="$(((WEB_SIZ*1000)/(1024**I)))"
## TXT_SIZ="$(printf "%'.1f ${TXT_UNT[${I}]}" "${INT_SIZ::${#INT_SIZ}-3}.${INT_SIZ:${#INT_SIZ}-3}")"
# break
# fi
# done
# fi
funcPrintf "get file: ${WEB_FIL} (${TXT_SIZ})"
if curl "$@"; then
return $?
fi
for ((I=0; I<3; I++))
do
funcPrintf "retry count: ${I}"
if curl --continue-at "$@"; then
return "$?"
else
RET_CD="$?"
fi
done
return "${RET_CD}"
# curl "$@"
# RET_CD=$?
# if [[ "${RET_CD}" -ne 0 ]]; then
# for ((I=0; I<3; I++))
# do
# funcPrintf "retry count: ${I}"
# curl --continue-at "$@"
# RET_CD=$?
# if [[ "${RET_CD}" -eq 0 ]]; then
# break
# fi
# done
# fi
# return "${RET_CD}"
}
service status
funcServiceStatus
function funcServiceStatus() {
# declare -r OLD_IFS="${IFS}"
# shellcheck disable=SC2155
declare SRVC_STAT="$(systemctl is-enabled "$1" 2> /dev/null || true)"
# -------------------------------------------------------------------------
if [[ -z "${SRVC_STAT}" ]]; then
SRVC_STAT="not-found"
fi
case "${SRVC_STAT}" in
disabled ) SRVC_STAT="disabled";;
enabled | \
enabled-runtime ) SRVC_STAT="enabled";;
linked | \
linked-runtime ) SRVC_STAT="linked";;
masked | \
masked-runtime ) SRVC_STAT="masked";;
alias ) ;;
static ) ;;
indirect ) ;;
generated ) ;;
transient ) ;;
bad ) ;;
not-found ) ;;
* ) SRVC_STAT="undefined";;
esac
echo "${SRVC_STAT}"
}
is package
funcIsPackage
function funcIsPackage () {
LANG=C apt list "${1:?}" 2> /dev/null | grep -q 'installed'
}
dash用
ipv4 netmask conversion
funcIPv4GetNetmask
funcIPv4GetNetmask() {
INP_ADDR="$1"
LOOP=$((32-INP_ADDR))
WORK=1
DEC_ADDR=""
while [ "${LOOP}" -gt 0 ]
do
LOOP=$((LOOP-1))
WORK=$((WORK*2))
done
DEC_ADDR="$((0xFFFFFFFF ^ (WORK-1)))"
printf '%d.%d.%d.%d' \
$(( DEC_ADDR >> 24 )) \
$(((DEC_ADDR >> 16) & 0xFF)) \
$(((DEC_ADDR >> 8) & 0xFF)) \
$(( DEC_ADDR & 0xFF))
}
IPv4 cidr conversion
funcIPv4GetNetCIDR
funcIPv4GetNetCIDR() {
# INP_ADDR="$1"
# echo "${INP_ADDR}" | \
# awk -F '.' '{
# split($0, OCTETS)
# for (I in OCTETS) {
# MASK += 8 - log(2^8 - OCTETS[I])/log(2)
# }
# print MASK
# }'
INP_ADDR="$1"
OLD_IFS=${IFS}
IFS='.'
set -f
# shellcheck disable=SC2086
set -- ${INP_ADDR}
set +f
OCTETS1="${1}"
OCTETS2="${2}"
OCTETS3="${3}"
OCTETS4="${4}"
IFS=${OLD_IFS}
MASK=0
for OCTETS in "${OCTETS1}" "${OCTETS2}" "${OCTETS3}" "${OCTETS4}"
do
case "${OCTETS}" in
0) MASK=$((MASK+0));;
128) MASK=$((MASK+1));;
192) MASK=$((MASK+2));;
224) MASK=$((MASK+3));;
240) MASK=$((MASK+4));;
248) MASK=$((MASK+5));;
252) MASK=$((MASK+6));;
254) MASK=$((MASK+7));;
255) MASK=$((MASK+8));;
* ) ;;
esac
done
printf '%d' "${MASK}"
}
service status
funcServiceStatus
funcServiceStatus() {
SRVC_STAT="undefined"
case "$1" in
is-enabled )
SRVC_STAT="$(systemctl is-enabled "$2" 2> /dev/null || true)"
if [ -z "${SRVC_STAT}" ]; then
SRVC_STAT="not-found"
fi
case "${SRVC_STAT}" in
disabled ) SRVC_STAT="disabled";;
enabled | \
enabled-runtime ) SRVC_STAT="enabled";;
linked | \
linked-runtime ) SRVC_STAT="linked";;
masked | \
masked-runtime ) SRVC_STAT="masked";;
alias ) ;;
static ) ;;
indirect ) ;;
generated ) ;;
transient ) ;;
bad ) ;;
not-found ) ;;
* ) ;;
esac
;;
is-active )
SRVC_STAT="$(systemctl is-active "$2" 2> /dev/null || true)"
if [ -z "${SRVC_STAT}" ]; then
SRVC_STAT="not-found"
fi
;;
* ) ;;
esac
echo "${SRVC_STAT}"
}
共通関数テスト
function test
funcCall_function
function funcCall_function() {
# declare -r OLD_IFS="${IFS}"
declare -r MSGS_TITL="call function test"
declare -r FILE_WRK1="${DIRS_TEMP}/testfile1.txt"
declare -r FILE_WRK2="${DIRS_TEMP}/testfile2.txt"
declare -r TEST_ADDR="https://raw.githubusercontent.com/office-itou/Linux/master/Readme.md"
declare -r -a CURL_OPTN=( \
"--location" \
"--progress-bar" \
"--remote-name" \
"--remote-time" \
"--show-error" \
"--fail" \
"--retry-max-time" "3" \
"--retry" "3" \
"--create-dirs" \
"--output-dir" "${DIRS_TEMP}" \
"${TEST_ADDR}" \
)
declare TEST_PARM=""
declare -i I=0
declare H1=""
declare H2=""
# -------------------------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- ${MSGS_TITL} $(funcString "${COLS_SIZE}" '-')"
mkdir -p "${FILE_WRK1%/*}"
cat <<- _EOT_ | sed -e '/^ [^ ]\+/ s/^ *//g' -e 's/^ \+$//g' > "${FILE_WRK1}"
line 00
line 01
line 02
line 03
line 04
line 05
line 06
line 07
line 08
line 09
line 10
_EOT_
mkdir -p "${FILE_WRK2%/*}"
cat <<- _EOT_ | sed -e '/^ [^ ]\+/ s/^ *//g' -e 's/^ \+$//g' > "${FILE_WRK2}"
line 00
line 01
line 02
line 03
line 04
line_05
line 06
line 07
line 08
line 09
line 10
_EOT_
# --- text print test -----------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- text print test $(funcString "${COLS_SIZE}" '-')"
H1=""
H2=""
for ((I=1; I<="${COLS_SIZE}"+10; I++))
do
if [[ $((I % 10)) -eq 0 ]]; then
H1+=" $((I%100/10))"
fi
H2+="$((I%10))"
done
funcPrintf "${H1}"
funcPrintf "${H2}"
# shellcheck disable=SC2312
funcPrintf "$(funcString "${COLS_SIZE}" '->')"
# shellcheck disable=SC2312
funcPrintf "$(funcString "${COLS_SIZE}" '→')"
# shellcheck disable=SC2312
funcPrintf "_$(funcString "${COLS_SIZE}" '→')_"
echo ""
# --- text color test -----------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- text color test $(funcString "${COLS_SIZE}" '-')"
funcPrintf "--no-cutting" "funcColorTest"
funcColorTest
echo ""
# --- printf --------------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- printf $(funcString "${COLS_SIZE}" '-')"
funcPrintf "--no-cutting" "funcPrintf"
funcPrintf "%s : %-12.12s : %s" "${TXT_RESET}" "TXT_RESET" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_ULINE}" "TXT_ULINE" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_ULINERST}" "TXT_ULINERST" "${TXT_RESET}"
# funcPrintf "%s : %-12.12s : %s" "${TXT_BLINK}" "TXT_BLINK" "${TXT_RESET}"
# funcPrintf "%s : %-12.12s : %s" "${TXT_BLINKRST}" "TXT_BLINKRST" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_REV}" "TXT_REV" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_REVRST}" "TXT_REVRST" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BLACK}" "TXT_BLACK" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_RED}" "TXT_RED" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_GREEN}" "TXT_GREEN" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_YELLOW}" "TXT_YELLOW" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BLUE}" "TXT_BLUE" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_MAGENTA}" "TXT_MAGENTA" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_CYAN}" "TXT_CYAN" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_WHITE}" "TXT_WHITE" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BBLACK}" "TXT_BBLACK" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BRED}" "TXT_BRED" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BGREEN}" "TXT_BGREEN" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BYELLOW}" "TXT_BYELLOW" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BBLUE}" "TXT_BBLUE" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BMAGENTA}" "TXT_BMAGENTA" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BCYAN}" "TXT_BCYAN" "${TXT_RESET}"
funcPrintf "%s : %-12.12s : %s" "${TXT_BWHITE}" "TXT_BWHITE" "${TXT_RESET}"
echo ""
# --- diff ----------------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- diff $(funcString "${COLS_SIZE}" '-')"
funcPrintf "--no-cutting" "funcDiff \"${FILE_WRK1/${PWD}\//}\" \"${FILE_WRK2/${PWD}\//}\" \"function test\""
funcDiff "${FILE_WRK1/${PWD}\//}" "${FILE_WRK2/${PWD}\//}" "function test"
funcPrintf "--no-cutting" "diff -y -W \"${COLS_SIZE}\" --suppress-common-lines \"${FILE_WRK1/${PWD}\//}\" \"${FILE_WRK2/${PWD}\//}\" \"function test\""
diff -y -W "${COLS_SIZE}" --suppress-common-lines "${FILE_WRK1/${PWD}\//}" "${FILE_WRK2/${PWD}\//}" || true
funcPrintf "--no-cutting" "diff -y -W \"${COLS_SIZE}\" \"${FILE_WRK1/${PWD}\//}\" \"${FILE_WRK2/${PWD}\//}\" \"function test\""
diff -y -W "${COLS_SIZE}" "${FILE_WRK1/${PWD}\//}" "${FILE_WRK2/${PWD}\//}" || true
funcPrintf "--no-cutting" "diff --color=always -y -W \"${COLS_SIZE}\" \"${FILE_WRK1/${PWD}\//}\" \"${FILE_WRK2/${PWD}\//}\" \"function test\""
diff --color=always -y -W "${COLS_SIZE}" "${FILE_WRK1/${PWD}\//}" "${FILE_WRK2/${PWD}\//}" || true
echo ""
# --- substr --------------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- substr $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="0001:0002:0003:0004:0005:0006:0007:0008"
funcPrintf "--no-cutting" "funcSubstr \"${TEST_PARM}\" 1 19"
funcPrintf "--no-cutting" " 1 2 3 4"
funcPrintf "--no-cutting" "1234567890123456789012345678901234567890"
funcPrintf "--no-cutting" "${TEST_PARM}"
funcSubstr "${TEST_PARM}" 1 19
echo ""
# --- service status ------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- service status $(funcString "${COLS_SIZE}" '-')"
funcPrintf "--no-cutting" "funcServiceStatus \"sshd.service\""
funcServiceStatus "sshd.service"
echo ""
# --- IPv6 full address ---------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- IPv6 full address $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="fe80::1"
funcPrintf "--no-cutting" "funcIPv6GetFullAddr \"${TEST_PARM}\""
funcIPv6GetFullAddr "${TEST_PARM}"
echo ""
# --- IPv6 reverse address ------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- IPv6 reverse address $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="0001:0002:0003:0004:0005:0006:0007:0008"
funcPrintf "--no-cutting" "funcIPv6GetRevAddr \"${TEST_PARM}\""
funcIPv6GetRevAddr "${TEST_PARM}"
echo ""
echo ""
# --- IPv4 netmask conversion ---------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- IPv4 netmask conversion $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="24"
funcPrintf "--no-cutting" "funcIPv4GetNetmask \"${TEST_PARM}\""
funcIPv4GetNetmask "${TEST_PARM}"
echo ""
echo ""
# --- IPv4 cidr conversion ------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- IPv4 cidr conversion $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="255.255.255.0"
funcPrintf "--no-cutting" "funcIPv4GetNetCIDR \"${TEST_PARM}\""
funcIPv4GetNetCIDR "${TEST_PARM}"
echo ""
# --- is numeric ----------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- is numeric $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="123.456"
funcPrintf "--no-cutting" "funcIsNumeric \"${TEST_PARM}\""
funcIsNumeric "${TEST_PARM}"
echo ""
TEST_PARM="abc.def"
funcPrintf "--no-cutting" "funcIsNumeric \"${TEST_PARM}\""
funcIsNumeric "${TEST_PARM}"
echo ""
# --- string output -------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- string output $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="50"
funcPrintf "--no-cutting" "funcString \"${TEST_PARM}\" \"#\""
funcString "${TEST_PARM}" "#"
echo ""
# --- print with screen control -------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- print with screen control $(funcString "${COLS_SIZE}" '-')"
TEST_PARM="test"
funcPrintf "--no-cutting" "funcPrintf \"${TEST_PARM}\""
funcPrintf "${TEST_PARM}"
echo ""
# --- download ------------------------------------------------------------
# shellcheck disable=SC2312
funcPrintf "---- download $(funcString "${COLS_SIZE}" '-')"
funcPrintf "--no-cutting" "funcCurl ${CURL_OPTN[*]}"
funcCurl "${CURL_OPTN[@]}"
echo ""
# -------------------------------------------------------------------------
rm -f "${FILE_WRK1}" "${FILE_WRK2}"
ls -l "${DIRS_TEMP}"
}
funcCall_function 実行結果
スクリーンショット |
---|
![]() |
) |
funcCall_function 実行結果
2024/10/14 16:33:14 processing start
--- start ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--- main -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---- call debug ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---- call function test --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---- text print test -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
_→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
---- text color test -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcColorTest
: TXT_RESET :
: TXT_ULINE :
: TXT_ULINERST :
: TXT_REV :
: TXT_REVRST :
: TXT_BLACK :
: TXT_RED :
: TXT_GREEN :
: TXT_YELLOW :
: TXT_BLUE :
: TXT_MAGENTA :
: TXT_CYAN :
: TXT_WHITE :
: TXT_BBLACK :
: TXT_BRED :
: TXT_BGREEN :
: TXT_BYELLOW :
: TXT_BBLUE :
: TXT_BMAGENTA :
: TXT_BCYAN :
: TXT_BWHITE :
---- printf --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcPrintf
: TXT_RESET :
: TXT_ULINE :
: TXT_ULINERST :
: TXT_REV :
: TXT_REVRST :
: TXT_BLACK :
: TXT_RED :
: TXT_GREEN :
: TXT_YELLOW :
: TXT_BLUE :
: TXT_MAGENTA :
: TXT_CYAN :
: TXT_WHITE :
: TXT_BBLACK :
: TXT_BRED :
: TXT_BGREEN :
: TXT_BYELLOW :
: TXT_BBLUE :
: TXT_BMAGENTA :
: TXT_BCYAN :
: TXT_BWHITE :
---- diff ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcDiff "share/temp/mk_custom_iso.sh.2447528/testfile1.txt" "share/temp/mk_custom_iso.sh.2447528/testfile2.txt" "function test"
function test
line 05 | line_05
diff -y -W "200" --suppress-common-lines "share/temp/mk_custom_iso.sh.2447528/testfile1.txt" "share/temp/mk_custom_iso.sh.2447528/testfile2.txt" "function test"
line 05 | line_05
diff -y -W "200" "share/temp/mk_custom_iso.sh.2447528/testfile1.txt" "share/temp/mk_custom_iso.sh.2447528/testfile2.txt" "function test"
line 00 line 00
line 01 line 01
line 02 line 02
line 03 line 03
line 04 line 04
line 05 | line_05
line 06 line 06
line 07 line 07
line 08 line 08
line 09 line 09
line 10 line 10
diff --color=always -y -W "200" "share/temp/mk_custom_iso.sh.2447528/testfile1.txt" "share/temp/mk_custom_iso.sh.2447528/testfile2.txt" "function test"
line 00 line 00
line 01 line 01
line 02 line 02
line 03 line 03
line 04 line 04
line 05 | line_05
line 06 line 06
line 07 line 07
line 08 line 08
line 09 line 09
line 10 line 10
---- substr --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcSubstr "0001:0002:0003:0004:0005:0006:0007:0008" 1 19
1 2 3 4
1234567890123456789012345678901234567890
0001:0002:0003:0004:0005:0006:0007:0008
0001:0002:0003:0004
---- service status ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcServiceStatus "sshd.service"
alias
---- IPv6 full address ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcIPv6GetFullAddr "fe80::1"
fe80:0000:0000:0000:0000:0000:0000:0001
---- IPv6 reverse address ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcIPv6GetRevAddr "0001:0002:0003:0004:0005:0006:0007:0008"
8.0.0.0.7.0.0.0.6.0.0.0.5.0.0.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0
---- IPv4 netmask conversion ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcIPv4GetNetmask "24"
255.255.255.0
---- IPv4 cidr conversion ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcIPv4GetNetCIDR "255.255.255.0"
24
---- is numeric ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcIsNumeric "123.456"
0
funcIsNumeric "abc.def"
1
---- string output -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcString "50" "#"
##################################################
---- print with screen control -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcPrintf "test"
test
---- download ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
funcCurl --location --progress-bar --remote-name --remote-time --show-error --fail --retry-max-time 3 --retry 3 --create-dirs --output-dir /home/master/share/temp/mk_custom_iso.sh.2447528 https://raw.githubusercontent.com/office-itou/Linux/master/Readme.md
get file: /home/master/share/temp/mk_custom_iso.sh.2447528/Readme.md (455 Byte)
################################################################################################################################################################################################# 100.0%
合計 4
-rw-r--r-- 1 root root 455 10月 14 16:33 Readme.md
--- complete -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2024/10/14 16:33:16 processing end
elapsed time: 0d00h00m02s