Shell 编程常用代码块之一

定义日志的颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
_COLORS=${BS_COLORS:-$(tput colors 2>/dev/null || echo 0)}
__detect_color_support() {
# shellcheck disable=SC2181
if [ $? -eq 0 ] && [ "$_COLORS" -gt 2 ]; then
RC='\033[1;31m'
GC='\033[1;32m'
BC='\033[1;34m'
YC='\033[1;33m'
EC='\033[0m'
else
RC=""
GC=""
BC=""
YC=""
EC=""
fi
}
__detect_color_support
echoerror() {
printf "${RC} * ERROR${EC}: %s\\n" "$@" 1>&2;
}
echoinfo() {
printf "${GC} * INFO${EC}: %s\\n" "$@";
}
echowarn() {
printf "${YC} * WARN${EC}: %s\\n" "$@";
}

# 使用示例
echoinfo "Hello World"
echowarn "Hello World"
echoerror "Hello World"

判断目录是否存在

1
2
3
4
5
6
7
LOGS_PATH="/tmp/logs/blog"

if [ ! -d "$LOGS_PATH" ]; then
echo "目录不存在"
else
echo "目录已存在"
fi

判断操作系统类型

1
2
3
4
5
6
7
8
9
_OS_LINUX="Linux"
_OS_INFO=`uname -a`

if [[ $_OS_INFO =~ $_OS_LINUX ]]
then
echo "Linux 操作系统"
else
echo "非 Linux 操作系统"
fi

判断是否为 Root 用户

1
2
3
if [ $UID -ne 0 ]; then
echo "非 Root 用户!"
fi

执行指定的 Shell 脚本文件

1
sh date.sh

或者执行指定的 Shell 脚本内容(Linux 命令行)

1
sh -c "echo 现在的时间:`date '+%Y-%m-%d %H:%M:%S'`"