1.出力色の機能
を使用echo -e
して、カラーコンテンツへの出力端子を実現します
1関数を定義します
#!/bin/bash
echo_color() {
declare -A col_arr
local col_arr=(
[red]="\033[31m"
[green]="\033[32m"
[yellow]="\033[33m"
[blue]="\033[34m"
[purple]="\033[37m"
)
end="\033[0m"
echo -e "${col_arr[$1]} $2 $end"
}
2関数を呼び出し、パラメーターを渡します
# 输出红色的 hello
echo_color red hello
# 输出绿色的 hello
echo_color green hello
2.テストパス
この関数は、渡されるパスがファイルパスであるかディレクトリパスであるかをテストするために使用されます。
-
ファイルパスの場合は、最初にファイルパスのディレクトリが存在するかどうかをテストし、存在しない場合は作成してから、ファイルパスを返します。
-
ディレクトリパスの場合は、ファイルパスが必要であるというプロンプトが表示され、終了します
用途に応じてさらに調整することができます。
1関数を定義します
check_file(){
# 计算参数长度
len=${#1}
# 获取到变量字符串的最后一个字符
last_char=${
1:(( $len-1 )):1}
# 通过判断最后一个字符是否为路径分隔符
# 来区分传入的路径是文件路径,还是目录路径
if [ "$last_char" == "/" ];then
echo "输入的文件路径似乎是个目录路径,需要的是一个文件路径"
exit
else
# 程序走到这里,说明是一个文件路径
# 获取到文件路径的 目录
log_dir=$(dirname $1)
ls $log_dir || mkdir -p $log_dir
echo $1
return 0
fi
}
2呼び出し関数
file=$(check_file /path/to/file)
echo $file
三、ロギングの機能
1関数を定義します
logger(){
local log_level=$1
local log_events=$2
local log_file=${
3:-"/var/log/${USER}-script.log"}
local dt=$(date +'%F %T')
echo -e "${dt} $0 $$ [$log_level] $log_events" \
>> $log_file
}
2呼び出し関数
# 设置记录日志的文件
log_file="$0-exec-xiguatian.log"
logger error 测试 $log_file
ファイルの内容を表示する:
[root@VM-0-11-centos ~]# cat t.sh-exec-xiguatian.log
2020-09-20 21:31:14 t.sh 9415 [error] 测试
3最適化
上記の関数を使用してファイルパスを確認し、受信ログファイルパスを確認できます。
そして、出力カラー機能を使用して、エラー情報を画面に出力します
check_file(){
# 计算参数长度
local len=${#1}
# 获取到变量字符串的最后一个字符
local last_char=${
1:(( $len-1 )):1}
# 通过判断最后一个字符是否为路径分隔符
# 来区分传入的路径是文件路径,还是目录路径
if [ "$last_char" == "/" ];then
echo ""
else
# 程序走到这里,说明是一个文件路径
# 获取到文件路径的 目录
local log_dir=$(dirname $1)
ls $log_dir || mkdir -p $log_dir
echo $1
return 0
fi
}
logger(){
local log_level=$1
local log_events=$2
local log_file=${
3:-"/var/log/${USER}-script.log"}
local dt=$(date +'%F %T')
echo -e "${dt} $0 $$ [$log_level] $log_events" >> $log_file
}
使用する場合は、上記のコードをファイルに保存して、関数ライブラリとして使用できます。
たとえば、ここでファイルに保存します/home/xiguatian/shark-logger
次に、ログに記録する必要があるスクリプトで使用します
some.sh
#!/usr/bin/env bash
source /home/xiguatian/shark-logger
log_file=$(check_file /ab/c/f.log)
logger error "测试" $log_file
テスト
[root@VM-0-11-centos ~]# cat /ab/c/f.log
2020-09-20 22:32:21 test.sh 20961 [error] 测试