Linux之Shell脚本入门
一、Shell概述
Shell是一個(gè)命令行解釋器,它接受應(yīng)用程序/用戶(hù)命令,然后調(diào)用操作系統(tǒng)內(nèi)核。
Shell還是一個(gè)功能強(qiáng)大的編程語(yǔ)言,易編寫(xiě)、易調(diào)試、靈活性強(qiáng)。
二、Shell腳本入門(mén)
1.腳本格式
腳本以#!/bin/bash開(kāi)頭
2.第一個(gè)Shell腳本
(1)需求
創(chuàng)建一個(gè)Shell腳本,輸出helloworld
(2)實(shí)操
touch helloworld.sh vim helloworld.sh在helloworld.sh中輸入如下內(nèi)容:
#!/bin/bash echo 'helloworld'(3)執(zhí)行方式
第一種:采用bash或sh+腳本的
sh+腳本的相對(duì)路徑(不用賦予腳本+x權(quán)限)
sh helloworld.shsh+腳本的絕對(duì)路徑
sh /home/depo/shell/helloworld.shbash+腳本的相對(duì)路徑
bash hellworld.shbash+腳本的絕對(duì)路徑
bash /home/depo/shell/helloworld.sh第二種:采用輸入腳本的絕對(duì)路徑或相對(duì)路徑執(zhí)行腳本(必須具有可執(zhí)行權(quán)限+x)
首先賦予helloworld.sh腳本的+x權(quán)限
chmod 777 helloworld.sh執(zhí)行腳本
相對(duì)路徑: ./helloworld.sh 絕對(duì)路徑: /home/depo/shell/helloworld.sh注意:第一種執(zhí)行方式,本質(zhì)是bash解析器幫你執(zhí)行腳本,所以腳本本身不需要執(zhí)行權(quán)限。第二種執(zhí)行方法,本質(zhì)是腳本需要自己執(zhí)行,所以需要執(zhí)行權(quán)限。
3.第二個(gè)Shell腳本:多命令處理
#!/bin/bash ? touch test.txt echo "i love java" >> test.txt三、Shell中的變量
1.系統(tǒng)變量
(1)常用系統(tǒng)變量
$HOME、$PWD、$SHELL、$USER等(2)實(shí)操
查看系統(tǒng)變量的值
[depo@dev shell]$ echo $HOME /home/depo2.自定義變量
(1)基本變量
定義變量: 變量=值
撤銷(xiāo)變量: unset 變量
聲明靜態(tài)變量: readonly 變量 注意:不能unset
(2)變量定義規(guī)則
-
變量名稱(chēng)可以由字母、數(shù)字和下劃線組成,但是不能以數(shù)字開(kāi)頭,環(huán)境變量名建議大寫(xiě)
-
等號(hào)兩側(cè)不能由空格
-
在bash中,變量默認(rèn)類(lèi)型都是字符串類(lèi)型,無(wú)法直接進(jìn)行數(shù)值運(yùn)算
-
變量的值如果有空格,需要使用雙引號(hào)或單引號(hào)括起來(lái)
(3)實(shí)操
1.定義變量A
A=5 echo $A2.給變量A重新賦值
A=8 echo $A3.撤銷(xiāo)變量A
unset A echo $A4.聲明靜態(tài)的變量B=2,不能unset
[depo@dev shell]$ readonly B=2 [depo@dev shell]$ echo $B 2 [depo@dev shell]$ unset B -bash: unset: B: 無(wú)法反設(shè)定: 只讀 variable [depo@dev shell]$5.在bash中,變量默認(rèn)是字符串類(lèi)型
[depo@dev shell]$ C=1+2 [depo@dev shell]$ echo C C [depo@dev shell]$6.可把變量提升為全局環(huán)境變量,供其他Shell程序使用
將變量C提升為全局變量:
export C修改helloworld.sh:
#!/bin/bash ? ? echo "helloworld" echo $C運(yùn)行:
[depo@dev shell]$ ./helloworld.sh helloworld 1+23.特殊變量:$n
(1)基本語(yǔ)法
$n:n為數(shù)組,$0代表該腳本名稱(chēng),$1-$9代表第一到第九個(gè)參數(shù),十以上的參數(shù)需要用大括號(hào)包含,如果${10}
(2)實(shí)操
touch parameter.sh vim parameter.sh #!/bin/bash ? echo "$0 $1 $2 $3" ? ? ?執(zhí)行該腳本
[depo@dev shell]$ sh parameter.sh abc yfy nihao parameter.sh abc yfy nihao4.特殊變量:$
(1)基本語(yǔ)法
$#:獲取所有輸入?yún)?shù)個(gè)數(shù),常用于循環(huán)
5.特殊變量:$*、$@
(1)基本語(yǔ)法
$*:這個(gè)變量代表命令行中所有的參數(shù),把所有的參數(shù)看成一個(gè)整體
$@:這個(gè)變量也代表命令行中所有的參數(shù),不過(guò)把每個(gè)參數(shù)區(qū)分對(duì)待
(2)實(shí)操
打印輸入的所有參數(shù)
vim parameter.sh ? #!/bin/bash ? echo "$0 $1 $2 $3" echo $# echo $* echo $@執(zhí)行:
[depo@dev shell]$ sh parameter.sh abc yfy nihao parameter.sh abc yfy nihao 3 abc yfy nihao abc yfy nihao5.特殊變量:$?
(1)基本語(yǔ)法
$?:最后一次執(zhí)行的命令的返回狀態(tài)。如果這個(gè)變量的值為0,證明上一個(gè)命令正確執(zhí)行
(2)實(shí)操
判斷helloworld.sh腳本是否正確執(zhí)行
[depo@dev shell]$ ./helloworld.sh helloworld 1+2 [depo@dev shell]$ echo $? 0 [depo@dev shell]$四、運(yùn)算符
1.基本語(yǔ)法
(1)$((運(yùn)算符))或$[運(yùn)算符]
(2)expr +,-,*,/,%. 加減乘除取余
2.實(shí)操
(1)計(jì)算3+2的值
[depo@dev shell]$ expr 2 + 3 5(2)計(jì)算(2+3)x4的值
expr一步完成計(jì)算
expr `expr 2 + 3` \* 4采用$[運(yùn)算式]方式
S=$[ (2+4)*4 ]?
總結(jié)
以上是生活随笔為你收集整理的Linux之Shell脚本入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Shiro在SpringBoot中的应用
- 下一篇: Linux之Shell脚本的条件判断和函