天天看點

Linux指令行與shell腳本程式設計大全筆記(建構基本腳本)

date; who

兩個指令一起運作 ,who輸出目前是誰登入了系統

#!/bin/bash

建立腳本時,必須在檔案第一行指定要使用的shell,shell不會解釋#開頭的行,除了第一行

執行腳本

./test.sh

要求将檔案的執行權限加上(

chmod u+x test.sh

sh test.sh

可以直接執行

顯示消息

echo this is a test

不加任何引号可以列印this is a test

echo " this is a new test 'hahaha' "

echo可以用單引号或者雙引号來劃定字元串,文本用了一種引号,則劃定字元串需要另外一種引号

echo -n  "haha:"
date
pwd
           

-n

可以将echo的下一個指令輸出拼接在目前輸出後面

echo " i have \$15 , i am a richer, hahaha"

反斜杆表示轉義,一般變量引用的時候用

$name

或者

${name}

使用者變量

*

由字母,數字,下劃線組成的字元串,長度不超過20

*

用等号指派,變量,等号,值之間不可以有空格!!!

*

shell腳本會自動決定變量的資料類型,腳本中的變量如果不經過修改,會保持值

*

引用變量的時候需要用美元符$,指派的時候不需要

指令替換 – shell中最有用的特性之一

  • 反引号字元(`)
  • $() 格式

today=$(date)

變量名,等号,值之間沒有空格, shell會運作替換符号中的指令,并将指令輸出結果賦給變量

today=$(date +%y%m%d)

date的格式化輸出1

*

指令替換會建立一個子shell來運作指令,子shell執行的指令是無法使用腳本中建立的變量的(此處不明白,試過是可以使用的)

輸出重定向

>

将指令的輸出發送到一個檔案中,覆寫檔案原有内容(全覆寫)

>>

追加資料到檔案中

輸入重定向

<輸入重定向将檔案的内容重定向到指令

wc < a.txt

文本計數,在指令行上,指令總是在最左側,而重定向符号指向資料流動方向

<<

内聯輸入重定向,将資料輸入即可

wc << EOF
>test1
>test2
>test3
>EOF
           

EOF 為标記,表示輸入内容的開始和結束,标記可以為任意字元,前後比對即可

管道

command1 | command2

Linux實際是同時運作這兩條指令,第一個指令産生輸出的同時,輸出會立即送給第二個指令,資料傳輸不會用到任何檔案和緩沖區

rpm -qa | sort | more

生成系統上安裝的包的list并排序後分頁檢視

expr指令

expr 1 + 5

該指令允許在指令行上處理數學表達式

expr

能夠識别少數的數學和字元串操作

expr的一些操作詳見該文章: 看示例

https://blog.csdn.net/guhong5153/article/details/6542995

使用方括号

var1=$[1 + 2]

将數學運算的結果給變量: 用美元符和方括号代替expr

var1=$[$var2 * $var3]

在腳本中使用變量,不用擔心 * 号,shell知道不是通配符

*

bash shell 的數學運算符隻支援整數運算

浮點的解決方案

bc

bash 電腦,能夠識别數字,變量,注釋,表達式,程式設計語句,函數

bc -q

不顯示bash電腦冗長的歡迎資訊

quit

退出電腦

scale=4

内建變量控制浮點數的位數,預設為0

print

允許在bc中列印變量和值

在腳本中使用bc

var1=$(echo " scale=4; 3.44/5 " | bc) 
echo $var1
           

使用内聯輸入重定向

var5=$(bc << EOF
scale = 4
a1 = (var1 * var2)
b1 = (var3 * var4)
a1 + b1
EOF
)
           

退出腳本

0~255退出狀态碼

$? 儲存上個已執行指令的退出狀态碼

狀态碼 描述
指令成功結束
1 一般性未知錯誤
2 不适合的shell指令
126 指令不可執行
127 沒找到指令
128 無效的退出參數
128+x 與Linux信号x相關的嚴重錯誤
130 通過Ctrl+C終止的指令
255 正常範圍之外的退出狀态碼

預設情況,

shell

腳本以腳本最後一個指令的退出碼狀态退出

exit n

可以自己指定一個退出碼

exit $var1

在exit指令中使用變量

退出碼隻能是

0~255

,超過則對

256

取餘