第一點(diǎn):Shell介紹?
Android開發(fā):動(dòng)態(tài)庫編譯(.so文件)
iOS開發(fā):靜態(tài)庫(.a文件)
Shell編譯
掌握基本Shell使用->修改和應(yīng)用Shell
第二點(diǎn):什么是Shell?
腳本語言->編譯庫(應(yīng)用技術(shù))
第三點(diǎn):Shell環(huán)境?
Mac環(huán)境支持Shell開發(fā)
Shell中類非常多
Bash所有的操作系統(tǒng)默認(rèn)腳本語言(免費(fèi)、易用)
種類:bash、c Shell、K Shell等等...
第四點(diǎn):進(jìn)入Shell語言基礎(chǔ)學(xué)習(xí)?
1、第一個(gè)Shell程序?
1.1 創(chuàng)建Shell文件
命令:touch hello.sh
1.2 編寫Shell程序
定義文件聲明
#!/bin/bash
echo "Hello world!"
#!:表示約定標(biāo)記,他會告訴系統(tǒng)這個(gè)腳本需要什么樣子的解釋器來執(zhí)行,既是一種腳本體現(xiàn)。
echo:表示命令用于輸出文本信息
1.3 修改文件權(quán)限
1.3.1 權(quán)限結(jié)構(gòu)
分為了4個(gè)部分(QQ群為例)
第一部分:文件類型->QQ群類型
第二部分:文件所有者->群主
第三部分:所有者同組用戶->管理員
第四部分:其他用戶->群成員
1.3.2 查看每一個(gè)部分權(quán)限
查看文件權(quán)限
命令:ls -l hello.sh
-rw-r—r--
1.3.3 修改文件權(quán)限
命令: chmod +x ./hello.sh
-rwxr-xr-x
1.4 執(zhí)行Shell腳本文件
命令:./hello.sh
2、Shell腳本語法->注釋?
”#“->表示注視
例如:
腳本代碼
#!/bin/bash
# 輸出了Hello world!
echo "Hello world!"
注意:在Shell腳本中,沒有多行注視,只有單行注釋
3、Shell腳本語言->變量
3.1 變量定義->注意事項(xiàng)
注意一:定義變量時(shí)候,變量名出不需要加"$"符號
注意二:變量名和等號不能夠有空格(和我們的一般語言不一樣)
注意三:變量名首字母必需是字母+下劃線(a-z、A-Z)
注意四:變量名中間不允許有空格
注意五:不允許使用標(biāo)點(diǎn)符號
…細(xì)節(jié)
3.2 只讀變量
關(guān)鍵字:readonly(只讀,不能夠修改)
腳本代碼
name="HelloApp"
readonly name
#./hello.sh: line 35: name: readonly variable
name="smile2017"
echo "執(zhí)行了"
3.3 刪除變量?
語法:unset(干掉了)
案例:unset 變量名
3.4 變量類型
3.4.1 類型一:本地變量
作用域整個(gè)bash進(jìn)程可以使用
語法:name="Dream"
3.4.2 類型二:局部變量
作用域:當(dāng)前代碼段(修飾符:local)
local name="Andy"
3.4.3 類型三:環(huán)境變量
作用域:當(dāng)前shell進(jìn)程以及子進(jìn)程
語法:export name="Dream"
3.4.4 類型四:位置變量
腳本代碼
#!/bin/bash
name=${0}
age=${1}
sex=${2}
echo "姓名:${name} 年齡:${age} 性別:${sex} "
執(zhí)行腳本
./hello.sh Jeff 150 男
執(zhí)行結(jié)果
${0}表示腳本文件名稱
參數(shù)從1開始
3.4.5 特殊變量
3.4.5.1 ${0}->特殊變量->文件名稱
3.4.5.2 ${?}->表示返回上一個(gè)命令執(zhí)行狀態(tài)返回值
0:表示執(zhí)行成功
1:程序執(zhí)行結(jié)果
2:表示程序狀態(tài)返回碼(0-255)
系統(tǒng)預(yù)留錯(cuò)誤(1、2、127)
案例測試
#!/bin/bash
echo ${0}
echo ${?}
3.4.5.3 $#->參數(shù)個(gè)數(shù)
3.4.5.4 $*->參數(shù)列表
3.4.5.5 $@->參數(shù)列表
3.4.5.6 $$->后去當(dāng)前shell進(jìn)行ID
3.4.5.7 $!->執(zhí)行上一個(gè)指令PID
3.4.5.8 ${*}和${@}區(qū)別?
腳本代碼
#!/bin/bash
echo ${*}
echo ${@}
執(zhí)行腳本
./hello.sh Andy 200 男
腳本結(jié)果
${*}->參數(shù)列表:將所有的參數(shù)組成一個(gè)字符串->"Andy 200 男"
${@}->參數(shù)列表:分開的->"Andy" 200 "男"
4、Shell腳本語言->字符串?
4.1 字符串->單引號
腳本代碼
#!/bin/bash
name='Andy'
echo ${name}
腳本結(jié)果:Andy
4.2 字符串->雙引號
腳本代碼
#!/bin/bash
name="Andy"
echo ${name}
腳本結(jié)果:Andy
4.3 字符串->拼接
方式一:
腳本代碼
#!/bin/bash
name="Andy"
age=100
sex="男"
info="${name} ${age} ${sex}"
echo ${info}
腳本結(jié)果:"Andy 100 男"
方式二
腳本代碼
#!/bin/bash
name="Andy"
age=100
sex="男"
info=" 姓名:"${name}" 年齡:"${age}" 性別:"${sex}" "
echo ${info}
腳本結(jié)果:"姓名:Andy 年齡:100 性別:男"
4.4 字符串->獲取字符串長度
語法結(jié)構(gòu):${#變量名}
腳本代碼
#!/bin/bash
name="Andy"
echo ${#name}
腳本結(jié)果:4
4.5 字符串->截取
語法:${變量名:開始位置:截取長度}
腳本代碼
#!/bin/bash
name="I have a Dream"
案例一:從字符串第3個(gè)開始截取,截取3個(gè)
name="I have a Dream"
result=${name:2:3}
echo ${result}
案例二:從字符串第5個(gè)開始截取,到最后一個(gè)結(jié)束
方式一
name="I have a Dream"
length=${#name}
result=${name:5:length-1}
echo ${result}
方式二
name="I have a Dream"
result=${name:5}
echo ${result}
4.6 字符串->刪除
語法一:${變量名#刪除字符串 正則表達(dá)式}
作用:從字符串開頭(左邊)開始匹配要?jiǎng)h除字符串
案例一:
name="I have a Dream"
result=${name#Dream}
echo ${result}
原因:匹配不到
案例二:
name="I have a Dream"
result=${name#I}
echo ${result}
案例三:查找指定字符第一個(gè),并且刪除前面所有的字符(包含自己)
name="I have a Dream"
result=${name#*D}
echo ${result}
案例四:指定刪除范圍
name="I have a Dream"
result=${name#h*D}
echo ${result}
語法二:${變量名##刪除字符串 正則表達(dá)式}
作用:從字符串結(jié)尾(右邊)開始匹配要?jiǎng)h除字符串
案例一
name="I have a Dream"
result=${name##*a}
echo ${result}
總結(jié):語法一和語法二,都是從左邊刪除到右邊,查找方向不一樣
語法三:${變量名%刪除字符串 正則表達(dá)式}
從字符串結(jié)尾開始匹配,刪除匹配的字符串
案例一:查找第一個(gè)字符(匹配第一個(gè))
代碼一:
name="I have a Dream"
result=${name%a}
echo ${result}
代碼二:
name="I have a Dream"
result=${name%m}
echo ${result}
案例二:查找指定字符第一個(gè),并且刪除前面所有字符(包含自己)
name="I have a Dream"
result=${name%h*}
echo ${result}
案例三:指定刪除范圍
name="I have a Dream"
result=${name%a*D}
echo ${result}
語法四:${變量名%%刪除字符串 正則表達(dá)式}
案例一:查找指定字符最后一個(gè),并且刪除前面所有的字符(包含自己)
name="I have a Dream"
result=${name%%a*}
echo ${result}
總結(jié):
從左邊刪除到右邊
#->表示查詢方向從左到右
##->表示查詢方向從右到左
從右邊刪除到左邊
%->表示查詢方向從右到左
%%->表示查詢方向從左到右
Shell腳本語言(第一篇)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。