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