Linux命令:終端打印,算術運算,常用變量

終端打印,算術運算,常用變量


#!稱爲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

查看環境變量

set命令可以查看所有的shell變量,其中包括環境變量

常見的環境變量

  • $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 :當前執行的進程/程序名
發佈了55 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章