1、利用[[ ]]、&&、 ||符號進行對if條件判斷進行替換,適合在一個大的if裡面還需要進行if判斷的情況
2、echo輸出顏色指令碼利用位置變數
/etc/init.d/functins檔案是系統自帶的函數庫,我們在寫shell指令碼的時候,source /etc/init.d/functions就可以得到四個echo相關命令,使用這些命令可以讓自己的指令碼輸出和系統的一樣,先在命令列進行演示,source之後,輸入echo進行tab補全,可以看到我們得到了failure passed success warning四種情況的系統輸出格式的命令
[root@sun init.d]# source functions
[root@sun init.d]# echo
echo echo_failure echo_passed echo_success echo_warning
學會簡單的用法,直接這樣寫
[root@sun init.d]# failure && echo "失敗情況的系統輸出"
失敗情況的系統輸出 [失敗]
[root@sun init.d]# passed && echo "失敗情況的系統輸出"
失敗情況的系統輸出 [通過]
[root@sun init.d]# warning && echo "警告情況的系統輸出"
警告情況的系統輸出 [警告]
[root@sun init.d]# success && echo "成功情況的系統輸出"
成功情況的系統輸出 [ 確定 ]
下面的是執行的有顏色的效果
#!/bin/bash
# Author:kakaops
# Email:17852032278@139.com
# 範例success和failure在啟動和停止服務中的應用
# 以nginx為例子,nginx的官方啟動命令為nginx,官方停止命令為nginx -s stop
# 範例如何用&&和||替換需要多行的if判斷
source /etc/init.d/functions
###################
# start函數
###################
start_nginx(){
[[ $(netstat -auntpl |grep nginx|wc -l) > 0 ]] && failure && echo "Nginx is already running" && exit
nginx
([ $? -eq 0 ] && success && echo "Nginx start sucessfully!") ||( failure && echo "Failed start nginx" )
}
###################
# stop函數
###################
stop_nginx(){
[[ $(ss -auntpl |grep nginx |wc -l) == 0 ]] && failure && echo "Nginx is not running" && exit
nginx -s stop
([ $? -eq 0 ] && success && echo "Nginx stop sucessfully!") || ( failure && echo "Failed stop nginx" )
}
case $1 in
start)
start_nginx
;;
stop)
stop_nginx
;;
*)
exit
;;
esac
echo改變當前終端的顏色(\e也可以是\033)
echo -e 顏色(-e是啟用跳脫字元)
[root@sun ~]# echo -e 「\e[1;31mThis is red text\e[0m」
用echo命令列印帶有色彩的文字:
文字色:
echo -e 「\e[1;31mThis is red text\e[0m」
\e[1;31m 將顏色設定為紅色
\e[0m 將顏色重新置回
字型本身的顏色和文字背景色文字動作色碼在分號左右沒有要求,引號可以並列多個格式
字型前景色:
顏色碼:重置=0,黑色=30,紅色=31,綠色=32,黃色=33,藍色=34,洋紅=35,青色=36,白色=37
文字背景色:
echo -e 「\e[1;42mGreed Background\e[0m」
顏色碼:重置=0,黑色=40,紅色=41,綠色=42,黃色=43,藍色=44,洋紅=45,青色=46,白色=47
文字動作:
echo -e 「\e[37;31;5mMySQL Server Stop…\e[0m」
動作碼:0 關閉所有屬性、1 設定高亮度(加粗)、3 傾斜 、4 下劃線、5 閃爍、7 反顯、8 消隱
python print() 輸出顏色和echo一樣:-e換成 \033
在這個指令碼裡,只是設定顏色為高亮顯示,別的引數,如果需要,自行新增,重要的是變思想方法
# 處理單行命令的顏色輸出
function black(){
echo -e "\e[1;30m$1\e[0m"
}
function red(){
echo -e "\e[1;31m$1\e[0m"
}
function green(){
echo -e "\e[1;32m$1\e[0m"
}
function yellow(){
echo -e "\e[1;33m$1\e[0m"
}
function blue(){
echo -e "\e[1;34m$1\e[0m"
}
function carmine(){
echo -e "\e[1;35m$1\e[0m"
}
function cyan(){
echo -e "\e[1;36m$1\e[0m"
}
function while(){
echo -e "\e[1;37m$1\e[0m"
}
先在當shell執行一下,看看效果然後進行改進
可以用顏色列印輸出一個檔案
顏色列印一條命令的輸出
上述驗證,我們的color.sh指令碼是可以行的,但指令碼雖然很簡單但是很長,改進一下
function color(){
declare -A color_info
color_info=([black]=30 [red]=31 [green]=32 [yellow]=33 [blue]=34 [carmine]=35 [cyan]=36 [white]=37)
echo -e "\e[1;${color_info[$1]}m$2\e[0m"
}
呼叫的時候和上面有點區別,需要傳遞兩個位置引數 $1、$2
命令列測試:
輸出檔案測試
命令輸出測試
shell命令列可以用,在自己寫的指令碼裡面source一下,用法一樣,不再贅述