diff --git a/ChangeMirrors.sh b/ChangeMirrors.sh index e86bdd7..41d8148 100644 --- a/ChangeMirrors.sh +++ b/ChangeMirrors.sh @@ -1,33 +1,28 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2021-10-24 +## Modified: 2021-12-15 ## License: GPL-2.0 ## Github Repository: https://github.com/SuperManito/LinuxMirrors ## Gitee Repository: https://gitee.com/SuperManito/LinuxMirrors function AuthorSignature() { - if [ ${SYSTEM_FACTIONS} = ${SYSTEM_DEBIAN} ]; then - apt-get install -y figlet toilet >/dev/null 2>&1 - elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then - yum install -y figlet toilet >/dev/null 2>&1 - fi - if [ -x /usr/bin/toilet ]; then - echo -e "\n$(toilet -f slant -F border --gay SuperManito)\n" - else - echo -e '\n\033[35m _____ __ ___ _ __ \033[0m' - echo -e '\033[31m / ___/__ ______ ___ _____/ |/ /___ _____ (_) /_____ \033[0m' - echo -e '\033[33m \__ \/ / / / __ \/ _ \/ ___/ /|_/ / __ `/ __ \/ / __/ __ \ \033[0m' - echo -e '\033[32m ___/ / /_/ / /_/ / __/ / / / / / /_/ / / / / / /_/ /_/ / \033[0m' - echo -e '\033[36m /____/\__,_/ .___/\___/_/ /_/ /_/\__,_/_/ /_/_/\__/\____/ \033[0m' - echo -e '\033[34m /_/ \033[0m\n' - fi - echo -e " Github: https://github.com/SuperManito/LinuxMirrors" - echo -e " Gitee: https://gitee.com/SuperManito/LinuxMirrors\n" + echo -e "\n${GREEN} ------------ 脚本执行结束 ------------ ${PLAIN}\n" + echo -e '\n\033[0;1;35;95m┌─\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m─┐\033[0m' + echo -e '\033[0;1;31;91m│\033[0m \033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_\033[0m \033[0;1;34;94m__\033[0m \033[0;1;31;91m__\033[0;1;33;93m_\033[0m \033[0;1;33;93m_\033[0m \033[0;1;32;92m_\033[0;1;36;96m_\033[0m \033[0;1;31;91m│\033[0m' + echo -e '\033[0;1;33;93m│\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m_\033[0;1;34;94m__\033[0;1;35;95m/_\033[0;1;31;91m_\033[0m \033[0;1;33;93m_\033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_\033[0m \033[0;1;35;95m_\033[0;1;31;91m__\033[0m \033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_/\033[0m \033[0;1;31;91m|/\033[0m \033[0;1;32;92m/_\033[0;1;36;96m__\033[0m \033[0;1;34;94m_\033[0;1;35;95m__\033[0;1;31;91m__\033[0m \033[0;1;32;92m(_\033[0;1;36;96m)\033[0m \033[0;1;34;94m/_\033[0;1;35;95m__\033[0;1;31;91m__\033[0m \033[0;1;33;93m│\033[0m' + echo -e '\033[0;1;32;92m│\033[0m \033[0;1;36;96m\\\033[0;1;34;94m__\033[0m \033[0;1;35;95m\\\033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m__\033[0m \033[0;1;35;95m\\\033[0;1;31;91m/\033[0m \033[0;1;33;93m_\033[0m \033[0;1;32;92m\/\033[0m \033[0;1;36;96m_\033[0;1;34;94m__\033[0;1;35;95m/\033[0m \033[0;1;31;91m/|\033[0;1;33;93m_/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m_\033[0;1;34;94m_\033[0m \033[0;1;35;95m`/\033[0m \033[0;1;31;91m_\033[0;1;33;93m_\033[0m \033[0;1;32;92m\/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m_\033[0;1;35;95m_/\033[0m \033[0;1;31;91m_\033[0;1;33;93m_\033[0m \033[0;1;32;92m\│\033[0m' + echo -e '\033[0;1;36;96m│\033[0m \033[0;1;34;94m__\033[0;1;35;95m_/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0;1;32;92m_/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0;1;35;95m_/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;32;92m__\033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0m \033[0;1;35;95m/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/_\033[0;1;35;95m/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0m \033[0;1;35;95m/_\033[0;1;31;91m/\033[0m \033[0;1;33;93m/_\033[0;1;32;92m/\033[0m \033[0;1;36;96m/│\033[0m' + echo -e '\033[0;1;34;94m│/\033[0;1;35;95m__\033[0;1;31;91m__\033[0;1;33;93m/\\\033[0;1;32;92m__\033[0;1;36;96m,_\033[0;1;34;94m/\033[0m \033[0;1;35;95m._\033[0;1;31;91m__\033[0;1;33;93m/\\\033[0;1;32;92m__\033[0;1;36;96m_/\033[0;1;34;94m_/\033[0m \033[0;1;31;91m/_\033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0;1;36;96m_/\033[0;1;34;94m\_\033[0;1;35;95m_,\033[0;1;31;91m_/\033[0;1;33;93m_/\033[0m \033[0;1;32;92m/\033[0;1;36;96m_/\033[0;1;34;94m_/\033[0;1;35;95m\_\033[0;1;31;91m_/\033[0;1;33;93m\_\033[0;1;32;92m__\033[0;1;36;96m_/\033[0m \033[0;1;34;94m│\033[0m' + echo -e '\033[0;1;35;95m│\033[0m \033[0;1;34;94m/\033[0;1;35;95m_/\033[0m \033[0;1;35;95m│\033[0m' + echo -e '\033[0;1;31;91m└─\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m─┘\033[0m\n' + + echo -e " \033[1;34mGithub\033[0m - https://github.com/SuperManito/LinuxMirrors" + echo -e " \033[1;34mGitee\033[0m - https://gitee.com/SuperManito/LinuxMirrors\n" } ## 定义系统判定变量 DebianRelease="lsb_release" -Arch=$(uname -m) +ARCH=$(uname -m) SYSTEM_DEBIAN="Debian" SYSTEM_UBUNTU="Ubuntu" SYSTEM_KALI="Kali" @@ -48,6 +43,18 @@ RedHatReposDir=/etc/yum.repos.d RedHatReposDirBackup=/etc/yum.repos.d.bak SelinuxConfig=/etc/selinux/config +RED='\033[31m' +GREEN='\033[32m' +YELLOW='\033[33m' +BLUE='\033[34m' +PLAIN='\033[0m' +BOLD='\033[1m' +SUCCESS='[\033[32mOK\033[0m]' +COMPLETE='[\033[32mDone\033[0m]' +WARN='[\033[33mWARN\033[0m]' +ERROR='[\033[31mERROR\033[0m]' +WORKING='[\033[34m*\033[0m]' + ## 组合函数 function Combin_Function() { PermissionJudgment @@ -68,13 +75,13 @@ function EnvJudgment() { elif [ -f $DebianVersion ]; then SYSTEM_FACTIONS=${SYSTEM_DEBIAN} else - echo -e '\n\033[31m -------- 无法判断当前运行环境,请先确认脚本是否已适配当前系统! ------------ \033[0m\n' + echo -e "\n${RED} ------------ 无法判断当前运行环境,请先确认脚本是否已适配当前系统! ------------ ${PLAIN}\n" exit fi ## 定义系统名称 - SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME" | awk -F '\"' '{print$2}') + SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g") ## 定义系统版本号 - SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease | grep -E "VERSION_ID" | awk -F '\"' '{print$2}') + SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease | grep -E "VERSION_ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g") ## 判定系统名称、版本、版本号 case ${SYSTEM_FACTIONS} in Debian) @@ -83,7 +90,7 @@ function EnvJudgment() { if [ $? -eq 0 ]; then clear else - echo -e '\n\033[31m -------- lsb-release 软件包安装失败 ------------ \033[0m' + echo -e "\n${ERROR} lsb-release 软件包安装失败" echo -e "\n本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统一般系统自带,请自行安装后重新执行脚本!\n" exit fi @@ -101,29 +108,29 @@ function EnvJudgment() { ;; esac ## 判定系统处理器架构 - case $Arch in + case ${ARCH} in x86_64) - SYSTEM_ARCH=x86_64 + SYSTEM_ARCH="x86_64" ;; aarch64) - SYSTEM_ARCH=ARM64 + SYSTEM_ARCH="ARM64" ;; armv7l) - SYSTEM_ARCH=ARMv7 + SYSTEM_ARCH="ARMv7" ;; armv6l) - SYSTEM_ARCH=ARMv6 + SYSTEM_ARCH="ARMv6" ;; i686) - SYSTEM_ARCH=x86_32 + SYSTEM_ARCH="x86_32" ;; *) - SYSTEM_ARCH=$Arch + SYSTEM_ARCH=${ARCH} ;; esac ## 定义软件源分支名称 if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_UBUNTU} ]; then - if [ ${Arch} = "x86_64" ] || [ ${Arch} = "*i?86*" ]; then + if [ ${ARCH} = "x86_64" ] || [ ${ARCH} = "*i?86*" ]; then SOURCE_BRANCH=${SYSTEM_JUDGMENT,,} else SOURCE_BRANCH=ubuntu-ports @@ -148,7 +155,7 @@ function EnvJudgment() { function PermissionJudgment() { ## 权限判定: if [ $UID -ne 0 ]; then - echo -e '\033[31m -------- Permission no enough, please use user ROOT! ------------ \033[0m' + echo -e "\n${ERROR} Permission no enough, please use user ROOT! \n" exit fi } @@ -157,7 +164,7 @@ function PermissionJudgment() { function TurnOffFirewall() { systemctl status firewalld | grep running -q if [ $? -eq 0 ]; then - CHOICE_C=$(echo -e '\n\033[1m└ 是否关闭防火墙和 SELINUX [ Y/n ]:\033[0m') + CHOICE_C=$(echo -e "\n${BOLD}└ 是否关闭防火墙和 SELINUX [ Y/n ]:${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -167,7 +174,7 @@ function TurnOffFirewall() { ;; [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不关闭 ------------\033[0m' + echo -e "\n${WARN} 输入错误,默认不关闭!" ;; esac fi @@ -195,24 +202,21 @@ function BackupMirrors() { ## /etc/apt/sources.list if [ -s $DebianSourceList ]; then if [ -s $DebianSourceListBackup ]; then - CHOICE_BACKUP1=$(echo -e "\n\033[1m└ 检测到系统存在已备份的 list 源文件,是否覆盖备份 [ Y/n ]:\033[0m") + CHOICE_BACKUP1=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 list 源文件,是否覆盖备份 [ Y/n ]:${PLAIN}") read -p "${CHOICE_BACKUP1}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) - echo -e '' cp -rf $DebianSourceList $DebianSourceListBackup >/dev/null 2>&1 ;; - [Nn] | [Nn][Oo]) - echo -e '' - ;; + [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不覆盖 ------------\033[0m\n' + echo -e "\n${WARN} 输入错误,默认不覆盖!\n" ;; esac else cp -rf $DebianSourceList $DebianSourceListBackup >/dev/null 2>&1 - echo -e "\n\033[32m------------ 已备份原有 list 源文件至 $DebianSourceListBackup ------------\033[0m\n" + echo -e "\n${COMPLETE} 已备份原有 list 源文件至 $DebianSourceListBackup\n" sleep 1s fi else @@ -223,24 +227,22 @@ function BackupMirrors() { ## /etc/apt/sources.list.d if [ -d $DebianExtendListDir ] && [ ${VERIFICATION_FILES} -eq 0 ]; then if [ -d $DebianExtendListDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then - CHOICE_BACKUP2=$(echo -e "\n\033[1m└ 检测到系统存在已备份的 list 第三方源文件,是否覆盖备份 [ Y/n ]:\033[0m") + CHOICE_BACKUP2=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 list 第三方源文件,是否覆盖备份 [ Y/n ]:${PLAIN}") read -p "${CHOICE_BACKUP2}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) cp -rf $DebianExtendListDir/* $DebianExtendListDirBackup >/dev/null 2>&1 ;; - [Nn] | [Nn][Oo]) - echo '' - ;; + [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不覆盖 ------------\033[0m\n' + echo -e "\n${WARN} 输入错误,默认不覆盖!\n" ;; esac else [ -d $DebianExtendListDirBackup ] || mkdir -p $DebianExtendListDirBackup cp -rf $DebianExtendListDir/* $DebianExtendListDirBackup >/dev/null 2>&1 - echo -e "\033[32m------------ 已备份原有 list 第三方源文件至 $DebianExtendListDirBackup 目录 ------------\033[0m\n" + echo -e "${COMPLETE} 已备份原有 list 第三方源文件至 $DebianExtendListDirBackup 目录\n" sleep 1s fi fi @@ -248,23 +250,22 @@ function BackupMirrors() { ## /etc/yum.repos.d if [ ${VERIFICATION_FILES} -eq 0 ]; then if [ -d $RedHatReposDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then - CHOICE_BACKUP3=$(echo -e "\n\033[1m└ 检测到系统存在已备份的 repo 源文件,是否覆盖备份 [ Y/n ]:\033[0m") + CHOICE_BACKUP3=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 repo 源文件,是否覆盖备份 [ Y/n ]:${PLAIN}") read -p "${CHOICE_BACKUP3}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) cp -rf $RedHatReposDir/* $RedHatReposDirBackup >/dev/null 2>&1 - echo -e '' ;; [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不覆盖 ------------\033[0m\n' + echo -e "\n${WARN} 输入错误,默认不覆盖!\n" ;; esac else [ -d $RedHatReposDirBackup ] || mkdir -p $RedHatReposDirBackup cp -rf $RedHatReposDir/* $RedHatReposDirBackup >/dev/null 2>&1 - echo -e "\n\033[32m------------ 已备份原有 repo 源文件至 $RedHatReposDirBackup 目录 ------------\033[0m\n" + echo -e "\n${COMPLETE} 已备份原有 repo 源文件至 $RedHatReposDirBackup 目录" sleep 1s fi else @@ -296,7 +297,7 @@ function ChangeMirrors() { RedHatMirrors yum clean all >/dev/null 2>&1 fi - echo -e "\033[32m------------ 开始${SYNC_TXT}软件源 ------------\033[0m\n" + echo -e "\n${WORKING} 开始${SYNC_TXT}软件源...\n" case ${SYSTEM_FACTIONS} in Debian) apt-get update @@ -307,16 +308,20 @@ function ChangeMirrors() { esac VERIFICATION_SOURCESYNC=$? if [ ${VERIFICATION_SOURCESYNC} -eq 0 ]; then - echo -e "\n\033[32m------------ ${SYNC_TXT}软件源结束 ------------\033[0m" + echo -e "\n${SUCCESS} 软件源更换完毕" else - echo -e "\n\033[31m------------ 软件源${SYNC_TXT}失败,请重新执行脚本 ------------\033[0m\n\n如果仍然${SYNC_TXT}失败那么可能由以下原因导致\n1. 网络问题:例如网络异常、网络间歇式中断、由地区影响的网络因素等\n2. 软件源问题:所选镜像站正在维护或者不支持你的操作系统\n" + echo -e "\n${ERROR} 软件源${SYNC_TXT}失败\n" + echo -e "请再次执行脚本并更换软件源后进行尝试,如果仍然${SYNC_TXT}失败那么可能由以下原因导致" + echo -e "1. 网络问题:例如网络异常、网络间歇式中断、由地区影响的网络因素等" + echo -e "2. 软件源问题:所选镜像站正在维护,或者出现罕见的少数文件同步出错导致软件源${SYNC_TXT}命令执行后返回错误状态" + echo '' exit fi } ## 更新软件包 function UpgradeSoftware() { - CHOICE_B=$(echo -e '\n\033[1m└ 是否更新软件包 [ Y/n ]:\033[0m') + CHOICE_B=$(echo -e "\n${BOLD}└ 是否更新软件包 [ Y/n ]:${PLAIN}") read -p "${CHOICE_B}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -330,7 +335,7 @@ function UpgradeSoftware() { yum update -y ;; esac - CHOICE_C=$(echo -e '\n\033[1m└ 是否清理已下载的软件包缓存 [ Y/n ]:\033[0m') + CHOICE_C=$(echo -e "\n${BOLD}└ 是否清理已下载的软件包缓存 [ Y/n ]:${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -343,20 +348,19 @@ function UpgradeSoftware() { yum clean packages -y >/dev/null 2>&1 fi - echo -e '\n[OK] 清理完毕' + echo -e "\n${COMPLETE} 清理完毕" ;; [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不清理 ------------\033[0m' + echo -e "\n${WARN} 输入错误,默认不清理!" ;; esac ;; [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不更新 ------------\033[0m' + echo -e "\n${WARN} 输入错误,默认不更新!" ;; esac - echo -e '\n\033[32m------------ 软件源更换完毕 ------------\033[0m' } ## 更换基于 Debian 系 Linux 发行版的国内源 @@ -443,7 +447,7 @@ function RedHatMirrors() { function EPELMirrors() { ## 安装 EPEL 软件包 if [ ${VERIFICATION_EPEL} -ne 0 ]; then - echo -e '\033[32m------------ 安装 epel-release 软件包 ------------\033[0m\n' + echo -e "\n${WORKING} 安装 epel-release 软件包...\n" yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-${CENTOS_VERSION}.noarch.rpm fi ## 删除原有 EPEL 扩展 repo 源文件 @@ -463,7 +467,6 @@ function EPELMirrors() { esac sed -i "s|download.fedoraproject.org/pub|${SOURCE}|g" $RedHatReposDir/epel* rm -rf $RedHatReposDir/epel*rpmnew - echo '' } ## 选择国内源 @@ -501,11 +504,11 @@ function ChooseMirrors() { echo -e '' echo -e '#####################################################' echo -e '' - echo -e " 运行环境 \033[34m${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER} ${SYSTEM_ARCH}\033[0m" - echo -e " 系统时间 \033[34m$(date "+%Y-%m-%d %H:%M:%S")\033[0m" + echo -e " 运行环境 ${BLUE}${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER} ${SYSTEM_ARCH}${PLAIN}" + echo -e " 系统时间 ${BLUE}$(date "+%Y-%m-%d %H:%M:%S")${PLAIN}" echo -e '' echo -e '#####################################################' - CHOICE_A=$(echo -e '\n\033[1m└ 请选择并输入你想使用的软件源 [ 1-13 ]:\033[0m') + CHOICE_A=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的软件源 [ 1-13 ]:${PLAIN}") read -p "${CHOICE_A}" INPUT case $INPUT in 1) @@ -549,8 +552,8 @@ function ChooseMirrors() { ;; *) SOURCE="mirrors.aliyun.com" - echo -e '\n\033[33m------------ 输入错误,将默认使用阿里云作为国内源 ------------\033[0m' - sleep 1s + echo -e "\n${WARN} 输入错误,将默认使用 ${BLUE}阿里云${PLAIN} 作为国内源!" + sleep 2s ;; esac @@ -567,9 +570,9 @@ function ChooseMirrors() { VERIFICATION_EPELBACKUPFILES=$? if [ ${VERIFICATION_EPEL} -eq 0 ]; then - CHOICE_D=$(echo -e '\n\033[1m└ 检测到系统已安装 EPEL 扩展源,是否替换/覆盖为国内源 [ Y/n ]:\033[0m') + CHOICE_D=$(echo -e "\n${BOLD}└ 检测到系统已安装 EPEL 扩展源,是否替换/覆盖为国内源 [ Y/n ]:${PLAIN}") else - CHOICE_D=$(echo -e '\n\033[1m└ 是否安装 EPEL 扩展源 [ Y/n ]:\033[0m') + CHOICE_D=$(echo -e "\n${BOLD}└ 是否安装 EPEL 扩展源 [ Y/n ]:${PLAIN}") fi read -p "${CHOICE_D}" INPUT [ -z ${INPUT} ] && INPUT=Y @@ -581,14 +584,14 @@ function ChooseMirrors() { EPEL_INSTALL="False" ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不更换 ------------\033[0m' + echo -e "\n${WARN} 输入错误,默认不更换!" EPEL_INSTALL="False" ;; esac fi ## 选择同步软件源所使用的 WEB 协议( HTTP:80 端口,HTTPS:443 端口) - CHOICE_E=$(echo -e "\n\033[1m└ 软件源是否使用 HTTP 协议 [ Y/n ]:\033[0m") + CHOICE_E=$(echo -e "\n${BOLD}└ 软件源是否使用 HTTP 协议 [ Y/n ]:${PLAIN}") read -p "${CHOICE_E}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -599,7 +602,7 @@ function ChooseMirrors() { WEB_PROTOCOL="https" ;; *) - echo -e "\n\033[33m------------ 输入错误,默认使用 HTTPS 协议 ------------\033[0m" + echo -e "\n${WARN} 输入错误,默认使用 HTTPS 协议!" WEB_PROTOCOL="https" ;; esac diff --git a/DockerInstallation.sh b/DockerInstallation.sh index 1880493..a6366fa 100644 --- a/DockerInstallation.sh +++ b/DockerInstallation.sh @@ -1,33 +1,28 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2021-10-24 +## Modified: 2021-12-15 ## License: GPL-2.0 ## Github Repository: https://github.com/SuperManito/LinuxMirrors ## Gitee Repository: https://gitee.com/SuperManito/LinuxMirrors function AuthorSignature() { - if [ ${SYSTEM_FACTIONS} = ${SYSTEM_DEBIAN} ]; then - apt-get install -y figlet toilet >/dev/null 2>&1 - elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then - yum install -y figlet toilet >/dev/null 2>&1 - fi - if [ -x /usr/bin/toilet ]; then - echo -e "\n$(toilet -f slant -F border --gay SuperManito)\n" - else - echo -e '\n\033[35m _____ __ ___ _ __ \033[0m' - echo -e '\033[31m / ___/__ ______ ___ _____/ |/ /___ _____ (_) /_____ \033[0m' - echo -e '\033[33m \__ \/ / / / __ \/ _ \/ ___/ /|_/ / __ `/ __ \/ / __/ __ \ \033[0m' - echo -e '\033[32m ___/ / /_/ / /_/ / __/ / / / / / /_/ / / / / / /_/ /_/ / \033[0m' - echo -e '\033[36m /____/\__,_/ .___/\___/_/ /_/ /_/\__,_/_/ /_/_/\__/\____/ \033[0m' - echo -e '\033[34m /_/ \033[0m\n' - fi - echo -e " Github: https://github.com/SuperManito/LinuxMirrors" - echo -e " Gitee: https://gitee.com/SuperManito/LinuxMirrors\n" + echo -e "\n${GREEN} ------------ 脚本执行结束 ------------ ${PLAIN}\n" + echo -e '\n\033[0;1;35;95m┌─\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m─┐\033[0m' + echo -e '\033[0;1;31;91m│\033[0m \033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_\033[0m \033[0;1;34;94m__\033[0m \033[0;1;31;91m__\033[0;1;33;93m_\033[0m \033[0;1;33;93m_\033[0m \033[0;1;32;92m_\033[0;1;36;96m_\033[0m \033[0;1;31;91m│\033[0m' + echo -e '\033[0;1;33;93m│\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m_\033[0;1;34;94m__\033[0;1;35;95m/_\033[0;1;31;91m_\033[0m \033[0;1;33;93m_\033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_\033[0m \033[0;1;35;95m_\033[0;1;31;91m__\033[0m \033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_/\033[0m \033[0;1;31;91m|/\033[0m \033[0;1;32;92m/_\033[0;1;36;96m__\033[0m \033[0;1;34;94m_\033[0;1;35;95m__\033[0;1;31;91m__\033[0m \033[0;1;32;92m(_\033[0;1;36;96m)\033[0m \033[0;1;34;94m/_\033[0;1;35;95m__\033[0;1;31;91m__\033[0m \033[0;1;33;93m│\033[0m' + echo -e '\033[0;1;32;92m│\033[0m \033[0;1;36;96m\\\033[0;1;34;94m__\033[0m \033[0;1;35;95m\\\033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m__\033[0m \033[0;1;35;95m\\\033[0;1;31;91m/\033[0m \033[0;1;33;93m_\033[0m \033[0;1;32;92m\/\033[0m \033[0;1;36;96m_\033[0;1;34;94m__\033[0;1;35;95m/\033[0m \033[0;1;31;91m/|\033[0;1;33;93m_/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m_\033[0;1;34;94m_\033[0m \033[0;1;35;95m`/\033[0m \033[0;1;31;91m_\033[0;1;33;93m_\033[0m \033[0;1;32;92m\/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m_\033[0;1;35;95m_/\033[0m \033[0;1;31;91m_\033[0;1;33;93m_\033[0m \033[0;1;32;92m\│\033[0m' + echo -e '\033[0;1;36;96m│\033[0m \033[0;1;34;94m__\033[0;1;35;95m_/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0;1;32;92m_/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0;1;35;95m_/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;32;92m__\033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0m \033[0;1;35;95m/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/_\033[0;1;35;95m/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0m \033[0;1;35;95m/_\033[0;1;31;91m/\033[0m \033[0;1;33;93m/_\033[0;1;32;92m/\033[0m \033[0;1;36;96m/│\033[0m' + echo -e '\033[0;1;34;94m│/\033[0;1;35;95m__\033[0;1;31;91m__\033[0;1;33;93m/\\\033[0;1;32;92m__\033[0;1;36;96m,_\033[0;1;34;94m/\033[0m \033[0;1;35;95m._\033[0;1;31;91m__\033[0;1;33;93m/\\\033[0;1;32;92m__\033[0;1;36;96m_/\033[0;1;34;94m_/\033[0m \033[0;1;31;91m/_\033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0;1;36;96m_/\033[0;1;34;94m\_\033[0;1;35;95m_,\033[0;1;31;91m_/\033[0;1;33;93m_/\033[0m \033[0;1;32;92m/\033[0;1;36;96m_/\033[0;1;34;94m_/\033[0;1;35;95m\_\033[0;1;31;91m_/\033[0;1;33;93m\_\033[0;1;32;92m__\033[0;1;36;96m_/\033[0m \033[0;1;34;94m│\033[0m' + echo -e '\033[0;1;35;95m│\033[0m \033[0;1;34;94m/\033[0;1;35;95m_/\033[0m \033[0;1;35;95m│\033[0m' + echo -e '\033[0;1;31;91m└─\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m─┘\033[0m\n' + + echo -e " \033[1;34mGithub\033[0m - https://github.com/SuperManito/LinuxMirrors" + echo -e " \033[1;34mGitee\033[0m - https://gitee.com/SuperManito/LinuxMirrors\n" } ## 定义系统判定变量 DebianRelease="lsb_release" -Arch=$(uname -m) +ARCH=$(uname -m) SYSTEM_DEBIAN="Debian" SYSTEM_UBUNTU="Ubuntu" SYSTEM_KALI="Kali" @@ -59,6 +54,18 @@ PROXY_URL=https://ghproxy.com/ DOCKER_COMPOSE_VERSION=1.29.2 DOCKER_COMPOSE_DOWNLOAD_URL=https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-Linux-x86_64 +RED='\033[31m' +GREEN='\033[32m' +YELLOW='\033[33m' +BLUE='\033[34m' +PLAIN='\033[0m' +BOLD='\033[1m' +SUCCESS='[\033[32mOK\033[0m]' +COMPLETE='[\033[32mDone\033[0m]' +WARN='[\033[33mWARN\033[0m]' +ERROR='[\033[31mERROR\033[0m]' +WORKING='[\033[34m*\033[0m]' + ## 组合函数 function Combin_Function() { PermissionJudgment @@ -81,13 +88,13 @@ function EnvJudgment() { elif [ -f $DebianVersion ]; then SYSTEM_FACTIONS=${SYSTEM_DEBIAN} else - echo -e '\n\033[31m -------- 无法判断当前运行环境,请先确认脚本是否已适配当前系统! ------------ \033[0m\n' + echo -e "\n${RED} ------------ 无法判断当前运行环境,请先确认脚本是否已适配当前系统! ------------ ${PLAIN}\n" exit fi ## 定义系统名称 - SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME" | awk -F '\"' '{print$2}') + SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g") ## 定义系统版本号 - SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease | grep -E "VERSION_ID" | awk -F '\"' '{print$2}') + SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease | grep -E "VERSION_ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g") ## 判定系统名称、版本、版本号 case ${SYSTEM_FACTIONS} in Debian) @@ -104,30 +111,30 @@ function EnvJudgment() { ;; esac ## 判定系统处理器架构 - case $Arch in + case ${ARCH} in x86_64) - SYSTEM_ARCH=x86_64 - SOURCE_ARCH=amd64 + SYSTEM_ARCH="x86_64" + SOURCE_ARCH="amd64" ;; aarch64) - SYSTEM_ARCH=ARM64 - SOURCE_ARCH=arm64 + SYSTEM_ARCH="ARM64" + SOURCE_ARCH="arm64" ;; armv7l) - SYSTEM_ARCH=ARMv7 - SOURCE_ARCH=armhf + SYSTEM_ARCH="ARMv7" + SOURCE_ARCH="armhf" ;; armv6l) - SYSTEM_ARCH=ARMv6 - SOURCE_ARCH=armhf + SYSTEM_ARCH="ARMv6" + SOURCE_ARCH="armhf" ;; - i686) - SYSTEM_ARCH=x86_32 - echo -e '\n\033[31m---------- Docker Engine 不支持安装在 x86_32 架构的环境上 ----------\033[0m' + i386 | i686) + SYSTEM_ARCH="x86_32" + echo -e "\n${RED}---------- Docker Engine 不支持安装在 x86_32 架构的环境上! ----------${PLAIN}\n" exit ;; *) - SYSTEM_ARCH=$Arch + SYSTEM_ARCH=${ARCH} SOURCE_ARCH=armhf ;; esac @@ -151,14 +158,14 @@ function EnvJudgment() { ## 基础环境判断 function PermissionJudgment() { if [ $UID -ne 0 ]; then - echo -e '\033[31m ---------- Permission no enough, please use user ROOT! ---------- \033[0m' + echo -e "\n${ERROR} Permission no enough, please use user ROOT! \n" exit fi } function NetWorkJudgment() { ping -c 1 www.baidu.com >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo -e "\033[31m ----- Network connection error, please check the network environment and try again later! ----- \033[0m" + echo -e "\n${RED} ----- Network connection error, please check the network environment and try again later! ----- ${PLAIN}\n" exit fi } @@ -183,6 +190,7 @@ function InstallationEnvironment() { rm -rf $DockerRepo ;; esac + echo -e "${WORKING} 开始${SYNC_TXT}软件源...\n" case ${SYSTEM_FACTIONS} in Debian) apt-get update @@ -193,9 +201,10 @@ function InstallationEnvironment() { esac VERIFICATION_SOURCESYNC=$? if [ ${VERIFICATION_SOURCESYNC} -ne 0 ]; then - echo -e "\n\033[31m ---------- 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用 ---------- \033[0m\n" + echo -e "\n${ERROR} 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用!\n" exit fi + echo -e "\n${SUCCESS} 软件源${SYNC_TXT}结束\n" case ${SYSTEM_FACTIONS} in Debian) apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common @@ -285,7 +294,7 @@ function DockerEngine() { DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1) if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then - echo -e '\n\033[32m---------- 检测到已安装最新版本的 Docker Engine,跳过安装 ----------\033[0m' + echo -e "\n${SUCCESS} 检测到已安装最新版本的 Docker Engine,跳过安装" ConfigureImageAccelerator systemctl status docker | grep running -q if [ $? -eq 0 ]; then @@ -298,27 +307,27 @@ function DockerEngine() { AuthorSignature exit else - CHOICE_E=$(echo -e '\n\033[1m└ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本 [ Y/n ]:\033[0m') + CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本 [ Y/n ]:${PLAIN}") fi else if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then - CHOICE_E=$(echo -e '\n\033[1m└ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本 [ Y/n ]:\033[0m') + CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本 [ Y/n ]:${PLAIN}") else - CHOICE_E=$(echo -e '\n\033[1m└ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本 [ Y/n ]:\033[0m') + CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本 [ Y/n ]:${PLAIN}") fi fi read -p "${CHOICE_E}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) - echo -en '\n[\033[34m*\033[0m] 正在卸载之前的版本... ' + echo -en "\n${WORKING} 正在卸载之前的版本..." RemoveOldVersion - echo -e '\n\n[\033[32mOK\033[0m] 卸载完毕\n' + echo -e "\n\n${SUCCESS} 卸载完毕\n" DockerEngineInstall ;; [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m---------- 输入错误,默认不覆盖安装 ----------\033[0m\n' + echo -e "\n${WARN} 输入错误,默认不覆盖安装!\n" ;; esac rm -rf $DockerVersionFile @@ -342,11 +351,11 @@ function DockerEngineInstall() { esac else DockerEngineVersionList - echo -e '\n\033[32m --------- 请选择你要安装的版本,如:19.03.15 ---------- \033[0m\n' + echo -e "\n${GREEN} --------- 请选择你要安装的版本,如:19.03.15 ---------- ${PLAIN}\n" cat $DockerVersionFile echo -e '\n注:以上可供选择的安装版本由官方源提供,若系统过新可能无法安装较旧的版本' while true; do - CHOICE_F=$(echo -e '\n\033[1m└ 请根据上面的列表,输入你想要安装的具体版本号:\033[0m\n') + CHOICE_F=$(echo -e "\n${BOLD}└ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n") read -p "${CHOICE_F}" DOCKER_VERSION echo '' cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1 @@ -356,10 +365,10 @@ function DockerEngineInstall() { rm -rf $DockerVersionFile break else - echo -e '\033[33m ---------- 请输入正确的版本号 ---------- \033[0m' + echo -e "${ERROR} 请输入正确的版本号!" fi else - echo -e '\033[33m ---------- 输入错误请重新输入 ---------- \033[0m' + echo -e "${ERROR} 输入错误请重新输入!" fi done case ${SYSTEM_FACTIONS} in @@ -395,7 +404,7 @@ function ConfigureImageAccelerator() { if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then if [ -d $DockerDir ] && [ -e $DockerConfig ]; then if [ -e $DockerConfigBackup ]; then - CHOICE_BACKUP=$(echo -e "\n\033[1m└ 检测到已备份的 Docker 配置文件,是否覆盖备份 [ Y/n ]:\033[0m") + CHOICE_BACKUP=$(echo -e "\n${BOLD}└ 检测到已备份的 Docker 配置文件,是否覆盖备份 [ Y/n ]:${PLAIN}") read -p "${CHOICE_BACKUP}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -404,12 +413,12 @@ function ConfigureImageAccelerator() { ;; [Nn] | [Nn][Oo]) ;; *) - echo -e '\n\033[33m------------ 输入错误,默认不覆盖 ------------\033[0m ' + echo -e "\n${WARN} 输入错误,默认不覆盖!" ;; esac else cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1 - echo -e "\n\033[1m└ 已备份原有 Docker 配置文件至 $DockerConfigBackup ...... \033[0m" + echo -e "\n${COMPLETE} 已备份原有 Docker 配置文件至 $DockerConfigBackup\n" fi sleep 2s else @@ -426,7 +435,7 @@ function ConfigureImageAccelerator() { function DockerCompose() { if [[ ${DOCKER_COMPOSE} == "True" ]]; then [ -e $DockerCompose ] && rm -rf $DockerCompose - if [[ ${Arch} == "x86_64" ]]; then + if [[ ${ARCH} == "x86_64" ]]; then echo -e '' if [ ${DOCKER_COMPOSE_DOWNLOAD_PROXY} == "True" ]; then curl -L ${PROXY_URL}${DOCKER_COMPOSE_DOWNLOAD_URL} -o $DockerCompose @@ -447,7 +456,7 @@ function DockerCompose() { else pip3 install docker-compose fi - [ $? -ne 0 ] && echo -e "\n\033[31m---------- Docker Compose 安装失败 ----------\033[0m\n\n检测到当前处理器架构为 ${Arch} ,无法保证安装结果,自行查看 pip 报错原因" + [ $? -ne 0 ] && echo -e "\n${ERROR} Docker Compose 安装失败\n\n检测到当前处理器架构为 ${ARCH} ,无法绝对保证安装成功,自行查看 pip 报错原因" fi fi echo -e '' @@ -455,14 +464,14 @@ function DockerCompose() { ## 查看版本并验证安装结果 function ShowVersion() { - echo -e '\033[32m---------- 验证安装版本 ----------\033[0m\n' + echo -e "${WORKING} 验证安装版本...\n" docker -v VERIFICATION_DOCKER=$? [[ ${DOCKER_COMPOSE} == "True" ]] && docker-compose -v if [ ${VERIFICATION_DOCKER} -eq 0 ]; then - echo -e '\n\033[32m---------- 安装完成 ----------\033[0m' + echo -e "\n${SUCCESS} 安装完成" else - echo -e '\n\033[31m---------- 安装失败 ----------\033[0m' + echo -e "\n${ERROR} 安装失败" case ${SYSTEM_FACTIONS} in Debian) echo -e "\n检查源文件: cat $DockerSourceList" @@ -485,9 +494,9 @@ function ShowVersion() { sleep 2 systemctl status docker | grep running -q if [ $? -ne 0 ]; then - echo -e '\n\033[31m [ERROR] 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致\033[0m' - echo -e '\n\033[31m 请执行 systemctl start docker 或 service docker start 命令尝试启动\033[0m' - echo -e '\n\033[31m 官方安装文档:https://docs.docker.com/engine/install\033[0m' + echo -e "\n${ERROR} 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致" + echo -e "\n请执行 systemctl start docker 或 service docker start 命令尝试启动" + echo -e "\n官方安装文档:https://docs.docker.com/engine/install" fi fi } @@ -542,7 +551,7 @@ function ChooseMirrors() { echo -e " 系统时间 $(date "+%Y-%m-%d %H:%M:%S")" echo -e '' echo -e '#####################################################' - CHOICE_A=$(echo -e '\n\033[1m└ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]:\033[0m') + CHOICE_A=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]:${PLAIN}") read -p "${CHOICE_A}" INPUT case $INPUT in 1) @@ -571,12 +580,12 @@ function ChooseMirrors() { ;; *) SOURCE="mirrors.aliyun.com/docker-ce" - echo -e '\n\033[33m---------- 输入错误,默认使用阿里云 ----------\033[0m' + echo -e "\n${WARN} 输入错误,默认使用阿里云!" sleep 1s ;; esac ## 是否手动选择安装版本 - CHOICE_C=$(echo -e '\n\033[1m └ 是否安装最新版本的 Docker Engine [ Y/n ]:\033[0m') + CHOICE_C=$(echo -e "\n${BOLD} └ 是否安装最新版本的 Docker Engine [ Y/n ]:${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -586,15 +595,15 @@ function ChooseMirrors() { [Nn] | [Nn][Oo]) DOCKER_VERSION_INSTALL_LATEST="False" if [ ${SOURCE} != "download.docker.com" ]; then - echo -e "\n\033[33m ---------- Docker CE 源已替换成官方源 ---------- \033[0m" + echo -e "\n${WARN} Docker CE 源已替换成官方源!" fi ;; *) DOCKER_VERSION_INSTALL_LATEST="True" - echo -e '\n\033[33m---------- 输入错误,默认安装最新版本 ----------\033[0m' + echo -e "\n${WARN} 输入错误,默认安装最新版本!" ;; esac - CHOICE_B=$(echo -e '\n\033[1m└ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]:\033[0m') + CHOICE_B=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]:${PLAIN}") read -p "${CHOICE_B}" INPUT case $INPUT in 1) @@ -648,21 +657,21 @@ function ChooseMirrors() { *) REGISTRY_SOURCE="registry.cn-hangzhou.aliyuncs.com" REGISTRY_SOURCE_OFFICIAL="False" - echo -e '\n\033[33m---------- 输入错误,默认使用阿里云(杭州) ----------\033[0m' + echo -e "\n${WARN} 输入错误,默认使用 ${BLUE}阿里云(杭州)${PLAIN}!" sleep 1s ;; esac if [ -x $DockerCompose ]; then - CHOICE_D=$(echo -e '\n\033[1m└ 检测到已安装 Docker Compose ,是否覆盖安装 [ Y/n ]:\033[0m') + CHOICE_D=$(echo -e "\n${BOLD}└ 检测到已安装 Docker Compose ,是否覆盖安装 [ Y/n ]:${PLAIN}") else - CHOICE_D=$(echo -e '\n\033[1m└ 是否安装 Docker Compose [ Y/n ]:\033[0m') + CHOICE_D=$(echo -e "\n${BOLD}└ 是否安装 Docker Compose [ Y/n ]:${PLAIN}") fi read -p "${CHOICE_D}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) DOCKER_COMPOSE="True" - CHOICE_D1=$(echo -e '\n\033[1m └ 是否使用国内代理进行下载 [ Y/n ]:\033[0m') + CHOICE_D1=$(echo -e "\n${BOLD} └ 是否使用国内代理进行下载 [ Y/n ]:${PLAIN}") read -p "${CHOICE_D1}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -674,7 +683,7 @@ function ChooseMirrors() { ;; *) DOCKER_COMPOSE_DOWNLOAD_PROXY="False" - echo -e '\n\033[33m---------- 输入错误,默认不使用 ----------\033[0m\n' + echo -e "\n${WARN} 输入错误,默认不使用!\n" ;; esac ;; @@ -683,7 +692,7 @@ function ChooseMirrors() { ;; *) DOCKER_COMPOSE="False" - echo -e '\n\033[33m---------- 输入错误,默认不安装 ----------\033[0m\n' + echo -e "\n${WARN} 输入错误,默认不安装!\n" ;; esac echo -e '' diff --git a/README.md b/README.md index a503376..ea51dd0 100644 --- a/README.md +++ b/README.md @@ -37,19 +37,19 @@