bashスクリプト - tetsuyaf1100/hello-world GitHub Wiki

Trap サンプル

  • main.sh
#!/bin/bash
set -eu
set -o pipefail
set -o errtrace
file_name=$BASH_SOURCE
trap 'echo "Error--> File: ${file_name}. Line: ${LINENO}. Command: ${BASH_COMMAND}. Exit code: $?"' ERR

. ./sub.sh
sub
  • sub.sh
#!/bin/bash
set -eu
set -o pipefail
set -o errtrace
file_name=$BASH_SOURCE
trap 'echo "Error--> File: ${file_name}. Line: ${LINENO}. Command: ${BASH_COMMAND}. Exit code: $?"' ERR

function sub () {
  false
}

Yes/No サンプル

#!/bin/bash

function confirm () {
echo -n "よろしいですか? [Y/n]: "
read ANS
case $ANS in
  [Yy]* )
    :
    ;;
  * )
    exit 1
    ;;
esac
}
confirm

tmux サンプル

#!/bin/bash
tmux split-window -v -p 30
tmux split-window -h -p 66
tmux split-window -h -p 50

rpm build サンプル

#!/bin/bash +x

# show usage
if [ $# -lt 1 ]; then
  echo "usage: $0 SPEC_FILES"
  exit 0
fi

SPEC_FILES=$*

for specfile in $SPEC_FILES; do
  rpmbuild -D "_topdir ${PWD}/rpmbuild" -ba "$specfile"
done

wheel build サンプル

#!/bin/bash

# show usage
if [ $# -lt 2 ]; then
  echo "usage: $0 TARGET_PRODUCT TARGET_BRANCH REQUIREMENTS"
  exit 0
fi

TARGET_PRODUCT=$1; shift
TARGET_BRANCH=$1; shift
REQUIREMENTS=$*

GIT_CLONE_URL=""
EXTRA_INDEX_URL=""
PYTHON_EXE="/usr/bin/python3"
VIRTUALENV_NAME="venv"

unset PIP_INDEX_URL
export PIP_TRUSTED_HOST=""

export PYCURL_SSL_LIBRARY=""

. "$(command -v virtualenvwrapper.sh)"

git clone "${GIT_CLONE_URL}" -b "${TARGET_BRANCH}"
cd "${TARGET_PRODUCT}" || exit

mkvirtualenv --clear --no-download -p "${PYTHON_EXE}" "${VIRTUALENV_NAME}"

mkdir pkgs

for REQUIREMENT in $REQUIREMENTS; do
  pip download -d ./pkgs -r "${REQUIREMENT}" --extra-index-url ${EXTRA_INDEX_URL} || exit 1
  pip install -r "${REQUIREMENT}" --no-index -f pkgs || exit 1
  pip wheel --no-index --no-deps -w ./wheelhouse ./pkgs/*
done

docker pool 監視サンプル

#!/bin/bash

LOGFILE="/var/log/lvs.log"
LIMIT_DOCKER_POOL="80"
lvs=$(lvs)
lvs_data=$(echo "$lvs" | awk 'NR==2')
date=$(date '+%Y%m%d')

echo "$date $lvs_data" >> $LOGFILE
status=$(echo "$(lvs | awk '/docker-pool/ { print $5}') <= $LIMIT_DOCKER_POOL" | bc)

if [ $status -eq 1 ]; then
  # echo "ok"
  exit 0
fi

export MAILRC=~/.mail.rc
to=""
subject="[ENV][ALERT][$(hostname)] Warning of docker-pool resource"

cat <<EOF | mailx -n -s "$subject" "$to"
$lvs
EOF

exit 1