Shell 指令碼檔案實現資料的輸出(純乾貨)

2022-05-17 18:33:55 字數 4052 閱讀 4628

一、echo用法:

echo使用說明:

echo命令支援-e選項,使用該選項可以讓echo命令識別\後面的轉義符號含義,常見轉義符號如表1-1所示。其中\033或\e後面可以跟終端編碼,終端編碼可以用於定義終端的字型顏色、背景顏色、定位游標等。

①使用echo命令編寫乙個更有趣的指令碼檔案選單!

#這個指令碼僅演示選單輸出,沒有具體的功能實現

echo "這是乙個列印選單的例子"

echo "1.檢視網絡卡資訊"

echo "2.檢視記憶體資訊"

echo "3.檢視磁碟資訊

4.檢視cpu資訊

5.檢視賬戶資訊"

#!/bin/bash

#version:2.0

clear

echo -e "\033[42m---------------------------------\033[0m"

echo -e "\e[2;10h這裡是選單\t\t#"

echo -e "#\e[32m 1.檢視網絡卡資訊\e[0m #"

echo -e "#\e[33m 2.檢視記憶體資訊\e[0m #"

echo -e "#\e[34m 3.檢視磁碟資訊\e[0m #"

echo -e "#\e[35m 4.檢視cpu資訊\e[0m #"

echo -e "#\e[36m 5.檢視賬戶資訊\e[0m #"

echo -e "\033[42m---------------------------------\033[0m"

echo

②彩色列印字型

annie.wu@rmsh06:~/work$ echo -e "\033[1mok"   #加粗顯示ok後沒關閉屬性

annie.wu@rmsh06:~/work$ echo -e "\e[1mok\e[0m" #使用\e和\033的效果相同

annie.wu@rmsh06:~/work$ echo -e "\e[4mok\e[0m" #加下劃線後輸出ok

annie.wu@rmsh06:~/work$ echo -e "\e[5mok\e[0m" #閃爍顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[30mok\e[0m" #黑色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[31mok\e[0m" #紅色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[32mok\e[0m" #綠色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[33mok\e[0m" #棕色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[34mok\e[0m" #藍色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[35mok\e[0m" #紫色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[36mok\e[0m" #藍綠色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[37mok\e[0m" #亮灰色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[1;33mok\e[0m" #亮黃色顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[42mok\e[0m" #綠色背景顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[44mok\e[0m" #藍色背景顯示ok

annie.wu@rmsh06:~/work$ echo -e "\e[32;44mok\e[0m" #綠色字型,藍色背景顯示ok

③實際應用log區分列印:

echo -e "\e[32m[ info `date "+%y-%m-%d %h:%m:%s"`]\e[0m"

echo -e "\e[31m[ error `date "+%y-%m-%d %h:%m:%s"`]\e[0m"

echo -e "\e[33m[ warning `date "+%y-%m-%d %h:%m:%s"`]\e[0m"

二、printf用法:

annie.wu@rmsh06:~/work$ printf "%d\n" 12

12annie.wu@rmsh06:~/work$ printf "%d\n" abc

-bash: printf: abc: invalid number

0annie.wu@rmsh06:~/work$ printf "%5d\n" 12

12annie.wu@rmsh06:~/work$ printf "%-5d\n" 12

12annie.wu@rmsh06:~/work$ printf "|%-10d|\n" 12 #右對齊輸出12,占用10位寬度

|12 |

annie.wu@rmsh06:~/work$ printf "|%10d|\n" 12 #左對齊輸出12,占用10位寬度

| 12|

annie.wu@rmsh06:~/work$ printf "%o\n" 10 #顯示10的八進位制值,八進位制12轉換為十進位制正好是10

12annie.wu@rmsh06:~/work$ printf "%x\n" 10 顯示10的十六進製制值

aannie.wu@rmsh06:~/work$ printf "%d\n" 0x11

17annie.wu@rmsh06:~/work$ printf "%d\n" 011

9annie.wu@rmsh06:~/work$ printf "%u\n" 92347436534856442

92347436534856442

annie.wu@rmsh06:~/work$ printf "%f\n" 3.55 #列印小數

3.550000

annie.wu@rmsh06:~/work$ printf "%.3f\n" 3.55 #列印小數,小數點後保留3位

3.550

annie.wu@rmsh06:~/work$ printf "|%8.3f|\n" 3.55 #右對齊,占用8位寬度

| 3.550|

annie.wu@rmsh06:~/work$ printf "|%-8.3f|\n" 3.55 #左對齊,占用8位寬度

|3.550 |

annie.wu@rmsh06:~/work$ printf "%s\n" "hello" #列印字串

hello

annie.wu@rmsh06:~/work$ printf "|%10s|\n" "hello" #右對齊,占用10位寬度

| hello|

annie.wu@rmsh06:~/work$ printf "|%-10s|\n" "hello" #左對齊,占用10位寬度

|hello |

annie.wu@rmsh06:~/work$ printf "%s\t%s\n" "hello" "worlf" #tab間隔列印2個字串

hello worlf

shell指令碼檔案引數

本文編輯自 當我們我們向 指令碼檔案傳遞引數 可以通過 1,2 等特殊變數。很方便,但是有些限制,就是不能超過9個引數。通過使用 shift getopts 我們能更方便地提取引數。一 shift 通過使用 shift 我們將 shell指令碼檔案 的引數起點從左向右移。在shift命令中可以給乙個...

Shell指令碼檔案練習

使用if條件語句來判斷 media cdrom檔案是否存在,若存在就結束條件判斷和整個shell指令碼,反之則去建立這個目錄 vim mkcdrom.sh bin bash ping c 3 i 0.2 w 3 1 dev null if eq 0 then echo host 1 is on li...

shell指令碼讀寫文字檔案

通過讀寫臨時檔案來完成核心與介面的互動是目前接觸的比較常用手段。而寫操作的格式如何呢。mdate date r d m y logfile tmp hdstatuslog.log echo disk is good mdate logfile 寫到檔案的格式就會變成這樣 dev sdc is goo...