# -> 表示注釋在腳本中沒(méi)有多行注釋只有單行注釋
echo -> 表示輸出例如 echo "Hello Word!"
例: name="HelloWord"
注意: 變量名和等號(hào)中間不能添加空格
注意: 變量名的首字符是字母或下劃線
例:
name="Hello Word and me!"
readonly name
name="111"
echo $name
執(zhí)行命令: ./hello.sh
報(bào)錯(cuò): ./hello.sh: line 8: name: readonly variable
例:
name="Hello Word and me!"
unset name
echo $name
執(zhí)行命令: ./hello.sh
打印為空
類型一: 本地變量
作用域是整個(gè)bash進(jìn)程可以使用
語(yǔ)法: name="Mr.H"
類型二: 局部變量
作用域: 當(dāng)前代碼段 (修飾符: local)
語(yǔ)法: local name="Mr.H"
類型三: 環(huán)境變量
作用域: 當(dāng)前shell進(jìn)程以及子進(jìn)程 (修飾符: export)
語(yǔ)法: export name="Mr.H"
類型三: 位置變量
語(yǔ)法: ${0}
例子
one=${0}
two=${1}
three=${2}
echo "文件名${one}"
echo "姓名${two} 年齡${three}"
執(zhí)行命令: $ ./hello.sh Mr.H 100
輸出:
文件名./hello.sh
姓名Mr.H 年齡100
${0} : 表示文件名稱
${?} : 表示返回上一個(gè)命令執(zhí)行的狀態(tài)返回值如下
0: 表示執(zhí)行成功
1: 表示執(zhí)行結(jié)果
0: 表示程序狀態(tài)返回碼(0-255)
例:
han = ""
temp=${?}
echo "哈哈${temp}"
執(zhí)行命令: ./hello.sh
./hello.sh: line 10: han: command not found
哈哈127
注意:此處所指的上一個(gè)命令其實(shí)就是上一行執(zhí)行的命令
${#} : 參數(shù)個(gè)數(shù)
${*} : 參數(shù)列表
${@} : 參數(shù)列表
${$} : 獲取當(dāng)前shell進(jìn)程ID
${!} : 執(zhí)行上一個(gè)指令進(jìn)程ID
聲明:
name='Han'
echo ${name}
字符串拼接
name='Han'
age=100
info="${name} ${age}"
echo ${info}
獲取字符串長(zhǎng)度 #
name="Han"
echo ${#name}
截取字符串
語(yǔ)法: ${變量名:開始位置:截取長(zhǎng)度}
例:
name="wangmumu"
echo ${name:0:3}
從第幾個(gè)截取到最后
name="wangmumu"
lenth=${#name}-1
echo ${name:1:lenth}
同時(shí)可以寫成,第三個(gè)參數(shù)不寫默認(rèn)截取到最后
echo ${name:1}
字符串刪除
語(yǔ)法: ${變量名#要?jiǎng)h除的字符串 正則表達(dá)式}
作用: 從字符串開頭(左邊)開始匹配要?jiǎng)h除的字符串
例:
name="wangmumu"
echo ${name#u}
這樣是刪除不了的因?yàn)檫@個(gè)是匹配左邊的第一個(gè)字符
name="wangmumu"
echo ${name#w}
這樣是可以刪除的
刪除某個(gè)字符前面的所有字符包含自己 *
例:
name="wangmumu"
echo ${name#*u}
執(zhí)行結(jié)果:
mu
指定范圍刪除 a*b 意思是刪除a和b之間的字符(注意a必須是第一 個(gè)字符)
例:
例:
name="wangmufmu"
echo ${name#w*f}
執(zhí)行結(jié)果:
mu
泛反向刪除使用(從右往左刪除)
name="wangmufmu"
echo ${name##*f}
執(zhí)行: wangmu
%刪除
語(yǔ)法: ${變量名%要?jiǎng)h除的字符串 正則表達(dá)式}
從字符串的尾部開始匹配, 刪除匹配的字符串
例:
name="wangmufmu"
echo ${name%u}
結(jié)果:
wangmufm
查找指定字符串第一個(gè),并且刪除前面所有字符串包括自己
name="wangmufmu"
echo ${name%f*}
結(jié)果:
wangmu
指定刪除的范圍
name="wangmufmu"
echo ${name%g*u}
結(jié)果:
wan
說(shuō)明: 是從第一個(gè)開始刪除到g這個(gè)字符
查找指定字符最后一個(gè),并且刪除前面所有字符
name="wangmufmu"
echo ${name%%u*}
結(jié)果:
wangm
總結(jié):
從左邊刪除到右邊
# : 表示查詢方向從左到右
## : 表示查詢方向從右到左
從右邊刪除到左邊
% : 表示查詢方向從右到左
%% : 表示查詢方向從左到右
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。