簡單shell案例
使用vim建立乙個檔案hello.sh
首行新增宣告,使用的是/bin目錄下的bash直譯器,因為linux有很多的直譯器
#!/bin/bash然後新增上一句
echo hello按: ,輸入wq 儲存退出
為檔案新增可執行許可權
控制台輸入以下內容
chmod +x hello.sh執行: ./hello.sh
即可輸出hello
注釋
當行注釋:# 內容
多行注釋:
:<<
! 內容
!
shell的變數
shell的變數的介紹
1.linux shell中的變數分為,系統變數和使用者自定義變數。
2.系統變數:$home、$pwd、$shell、$user等等
比如: echo $home 等等…
3.顯示當前shell中所有變數:set
shell變數的定義
4.取出變數使用 $
n=90基本語法echo $n
1.定義變數:變數=值
2.撤銷變數:unset 變數
3.宣告靜態變數:readonly變數,注意:不能unset
shell變數的定義
定義變數的規則
1.變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。
2.等號兩側不能有空格
3.變數名稱一般習慣為大寫
將命令的返回值賦給變數
1.a=`ls -la` 反引號,執行裡面的命令,並把結果返回給變數a
2.a=$(ls -la) 等價於反引號
設定環境變數
基本語法
1.export 變數名=變數值 (功能描述:將shell變數輸出為環境變數)
2.source 配置檔案 (功能描述:讓修改後的配置資訊立即生效,或者重啟機器、登出)
3.echo $變數名 (功能描述:查詢環境變數的值)
位置引數變數
介紹當我們執行乙個shell指令碼時,如果希望獲取到命令列的引數資訊,就可以使用到位置引數變數。
比如 : ./myshell.sh 100 200 , 這個就是乙個執行shell的命令列,可以在myshell 指令碼中獲取到引數資訊
基本語法
1.$n(功能描述:n為數字,$0代表命令本身,$1-$9代表第一到第九個引數,十以上的引數,十以上的引數需要用大括號包含,如$)
2.$*(功能描述:這個變數代表命令列中所有的引數,$* 把所有的引數看成乙個整體)
3.$@(功能描述:這個變數也代表命令列中所有的引數,不過$@把每個引數區分對待)
4.$#(功能描述:這個變數代表命令列中所有引數的個數)
預定義變數
基本介紹
就是shell設計者事先已經定義好的變數,可以直接在shell指令碼中使用
基本語法
$$ (功能描述:當前程序的程序號(pid))
$! (功能描述:後台執行的最後乙個程序的程序號(pid))
$? (功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上乙個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上乙個命令執行不正確了。)
運算子基本介紹
學習如何在shell中進行各種運算操作。
基本語法
1.「$((表示式))」或「$[表示式](推薦使用)」
2.expr m + n
注意expr運算子間要有空格
3.expr m - n
4.expr \*, /, % 乘,除,取餘
條件判斷
判斷語句
基本語法
[ condition ](注意condition前後要有空格)
#非空返回true,可使用$?驗證(0為true,>1為false)
判斷語句
• 常用判斷條件
兩個整數的比較
= 字串比較
-lt 小於
-le 小於等於
-eq 等於
-gt 大於
-ge 大於等於
-ne 不等於
按照檔案許可權進行判斷 -r 有讀的許可權
-w 有寫的許可權
-x 有執行的許可權
3)按照檔案型別進行判斷 -f 檔案存在並且是乙個常規的檔案
-e 檔案存在
-d 檔案存在並是乙個目錄
流程控制
if 判斷
基本語法
if[ 條件判斷式 ]
;then
#注意空格
程式fi
或者
if
[ 條件判斷式 ]
#注意空格
then
程式elif
[條件判斷式]
then
程式else
程式fi
流程控制
case語句
基本語法
case $變數名 in
"值1")
如果變數的值等於值1,則執行程式1 ;;
"值2")
如果變數的值等於值2,則執行程式2 ;;
…省略其他分支…
*)如果變數的值都不是以上的值,則執行此程式;;
esac
for迴圈
基本語法1
for 變數 in 值1 值2 值3…
do 程式
done
基本語法2
for
(( 初始值;迴圈控制條件;變數變化 ))
do 程式done
while迴圈
基本語法1
while
[ 條件判斷式 ]
#注意空格
do 程式
done
read讀取控制台輸入
基本語法
read(選項)(引數) 選項:
-p:指定讀取值時的提示符;
-t:指定讀取值時等待的時間(秒),如果沒有在指定的時間內輸入,就不再等待了。。
引數變數:指定讀取值的變數名
#輸入乙個數字,限時3秒
read -t 3 -p "input" num
echo
$num
函式
函式介紹
shell程式設計和其它程式語言一樣,有系統函式,也可以自定義函式。
系統函式
basename基本語法
功能:返回完整路徑最後 / 的部分,常用於獲取檔名
basename [pathname] [suffix]
basename [string] [suffix]
(功能描述:basename命令會刪掉所有的字首包括最後乙個(『/』)
字元,然後將字串顯示出來。
選項:suffix為字尾,如果suffix被指定了,basename會將pathname或string中的suffix去掉
>
basename /home/shell/nono.sh .sh
> nono
dirname基本語法
功能:返回完整路徑最後 / 的前面的部分,常用於返回路徑部分
dirname 檔案絕對路徑 (功能描述:從給定的包含絕對路徑的檔名中去除檔名(非目錄的部分),然後返回剩下的路徑(目錄的部分))
>
dirname /home/shell/nono.sh
> /home/shell
函式 自定義函式
基本語法
function funname(
)
呼叫直接寫函式名:funname [值] Shell 極簡教程
vim hello world.sh bin bash echo hello world chmod x sh hello world.sh hello,world bin bash echo hello,world a 1b expr a 1 echo b注意,變數名和等號之間不能有空格,這可能和...
Docker極簡入門
我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。root chatdevops yum y install docker root chatdevops docker version docker version ...
django極簡入門
django極簡入門 i.安裝python環境 ii.安裝django pip install djangoiii.建立django專案資料夾 django admin startproject myprojectiv.在專案資料夾內,如myproject myproject,建立視 件,如view...