終端打印,算術運算,常用變量
#!稱爲shebang
cmd1 ; cmd2
執行cmd1後在執行cmd2
終端打印
echo
echo hello world
echo 'hello world'
echo "hello world"
bash不會對單引號內變量(如$var
)求值。
printf
printf "hello world"
#!/bin/bash
printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323
- %-5s 格式爲左對齊且寬度爲5的字符串代替(-表示左對齊),不使用則是又對齊。
- %-4.2f 格式爲左對齊寬度爲4,保留兩位小數。
格式替代符
- %b 相對應的參數被視爲含有要被處理的轉義序列之字符串。
- %c ASCII字符。顯示相對應參數的第一個字符
- %d, %i 十進制整數
- %e, %E, %f 浮點格式
- %g %e或%f轉換,看哪一個較短,則刪除結尾的零
- %G %E或%f轉換,看哪一個較短,則刪除結尾的零
- %o 不帶正負號的八進制值
- %s 字符串
- %u 不帶正負號的十進制值
- %x 不帶正負號的十六進制值,使用a至f表示10至15
- %X 不帶正負號的十六進制值,使用A至F表示10至15
- %% 字面意義的%
轉義序列
- \a 警告字符,通常爲ASCII的BEL字符
- \b 後退
- \c 抑制(不顯示)輸出結果中任何結尾的換行字符(只在%b格式指示符控制下的參數字符串中有效),而且,任何留在參數裏的字符、任何接下來的參數以及任何留在格式字符串中的字符,都被忽略
- \f 換頁(formfeed)
- \n 換行
- \r 回車(Carriage return)
- \t 水平製表符
- \v 垂直製表符
- \ 一個字面上的反斜槓字符
- \ddd 表示1到3位數八進制值的字符,僅在格式字符串中有效
- \0ddd 表示1到3位的八進制值字符
在echo中轉義換行符
echo -e "包含轉義序列的字符串"
echo -e "1\t2\t3"
1 2 3
打印彩色輸出
文字色
echo -e "\e[1;31mThis is red text\e[0m"
#This is red text
- \e[1;31m 將顏色設置爲紅色
- \e[0m 將顏色重新置回
顏色碼:重置=0,黑色=30,紅色=31,綠色=32,黃色=33,藍色=34,洋紅=35,青色=36,白色=37
背景色
echo -e "\e[1;42mGreed Background\e[0m"
#Greed Background
顏色碼:重置=0,黑色=40,紅色=41,綠色=42,黃色=43,藍色=44,洋紅=45,青色=46,白色=47
文字閃動
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
紅色數字處還有其他數字參數:0 關閉所有屬性、1 設置高亮度(加粗)、4 下劃線、5 閃爍、7 反顯、8 消隱
算術運算
整數運算
let運算命令
#!/bin/bash
no1=2;
no2=3;
let result=no1+no2
echo $result
- 自加操作
let no++
- 自減操作
let no--
- 簡寫形式
let no+=10let no-=20
分別等同於let no=no+10let no=no-20
操作符[]運算方法
#!/bin/bash
no1=2;
no2=3;
result=$[$no1+no2]
echo $result
使用方法和let相似,在[]
中可以使$
前綴。
(())運算方法
#!/bin/bash
no1=2;
no2=3;
result=$((no1+no2))
echo $result
expr運算方法
result=`expr 2 + 3`
result=$(expr $no1 + 5)
expr的常用運算符
- 加法運算:+
- 減法運算:-
- 乘法運算:*
- 除法運算:/
- 求摸(取餘)運算:%
精密計算
算術操作高級運算工具:bc,它可以執行浮點運算和一些高級函數
echo "1.212*3" | bc
#3.636
設定小數精度(數值範圍)
echo "scale=2;3/8" | bc
#0.37
參數scale=2是將bc輸出結果的小數位設置爲2位。
進制轉換
#!/bin/bash
abc=192
echo "obase=2;$abc" | bc
執行結果爲:11000000,這是用bc將十進制轉換成二進制。
#!/bin/bash
abc=11000000
echo "obase=10;ibase=2;$abc" | bc
執行結果爲:192,這是用bc將二進制轉換爲十進制。
計算平方和平方根
echo "10^10" | bc
echo "sqrt(100)" | bc
常用變量
結合不同的引導爲變量賦值
- 雙引號 “” :允許通過$符號引用其他變量值
- 單引號 ‘’ :禁止引用其他變量值,$視爲普通字符
- 反撇號 `` :將命令執行的結果輸出給變量
用戶自定義變量
設置變量的作用範圍
格式:
export 變量名...
export 變量名=變量值 [...變量名n=變量值n]
清除用戶自定義變量
格式:
unset 變量名
環境變量
環境變量配置文件
- 全局配置文件:/etc/profile
- 用戶配置文件:~/.bash_profile
查看環境變量
常見的環境變量
- $USER 查看賬戶信息
- $logname 登錄相關信息
- $UID
- $Shell
- $HOME 家目錄
- $pwd
- $PATH 用戶所輸入的命令是在哪些目錄中查找
- $PS1
- $PS2
- $RANDOM 隨機數
位置變量
表示爲:$n (n爲1~9之間的數字)
#./test.sh one two three four five six
- $0 表示文件名本身
- one就是:$1
- two就是:$2
預定義變量
- $# :命令行中位置參數的個數
- $* :所有位置參數的內容
- $? :上一條命令執行後返回的狀態,當返回狀態值爲0時表示執行正常,非0表示執行異常或出錯
- $$ :當前所在進程的進程號
- $! :後臺運行的最後一個進程號
- $0 :當前執行的進程/程序名