国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Bash Shell腳本學(xué)習(xí)小結(jié)

2019-10-26 18:35:21
字體:
供稿:網(wǎng)友

1.字符截?cái)啵?br>
如果是一般路徑的字符截?cái)嗫梢杂胋asename和dirname這兩個(gè)工具:
basename可以從一個(gè)文件路徑中截一個(gè)文件名

例如:

代碼如下:
$ basename /home/file.tar
file.tar

dirname可以從一個(gè)文件路徑中截到一個(gè)目錄路徑
例如:
代碼如下:
$ dirname /home/file.tar
/home

不使用外部工具進(jìn)行字符截?cái)?BR>bash有自帶的功能來對變量進(jìn)行字符截?cái)啵话闶褂?##", "#", "%%", "%", "*" 組合來實(shí)現(xiàn)。例如:
代碼如下:
$ string=hellowbashshell
$ echo ${string##*sh}
ell
$ echo ${string#*sh}
shell
$ echo ${string%%sh*}
hellowba
$ echo ${string%sh*}
hellowbash

"#"表示從字符開始部分除去,一旦匹配則立即除去
"##"表示從字符開始部分除去,會(huì)搜整個(gè)字符串最長的和的匹配來除去
"%"表示從字符結(jié)束的部分除去,一旦匹配成公則立即除去
"%%"表示從字符結(jié)束的部分開始除去,會(huì)搜尋整個(gè)字符穿中最長的匹配來除去
"*"統(tǒng)配符,一般與“##”或"#"聯(lián)用時(shí)放在搜索字符串的左邊,例如:${String#*sh}(在sh的左邊),與"%%"或"%"聯(lián)用時(shí)會(huì)放在匹配字符串的右邊,例如:${String%%sh*}

常用技巧:

在路徑中取文件名:${path##*/}(與basename相同功能)
在路徑中取目錄路徑:${path%/*}(與dirname相同功能)
取文件的擴(kuò)展名:${path##*.}

2.自變量的接收

接收來自命令行傳入的參數(shù),第一個(gè)參數(shù)用$1表示,第二個(gè)參數(shù)$2表示,。。。以此類推。注意:$0表示腳本文件名。另外一個(gè)在shell編程中經(jīng)常用到的是“$@”這個(gè)代表所有的參數(shù),。你可以用一個(gè)循環(huán)來遍歷這個(gè)參數(shù)。如果用java來類比的話,可以把$@看作是man函數(shù)中定義的那個(gè)數(shù)組

3.if語句:
格式:
代碼如下:
if [ condition ]
then
    action
fi

注意:“if”和“[”之間需要空格,如果你不空格,shell會(huì)報(bào)告語法錯(cuò)誤的。我就被這個(gè)浪費(fèi)了好一陣時(shí)間

conditon測試類型對照表

運(yùn)算符描述示例
文件比較運(yùn)算符
-e filename如果 filename存在,則為真 [ -e /var/log/syslog ]
-d filename如果 filename為目錄,則為真 [ -d /tmp/mydir ]
-f filename如果 filename為常規(guī)文件,則為真 [ -f /usr/bin/grep ]
-L filename如果 filename為符號鏈接,則為真
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 合水县| 健康| 象州县| 凯里市| 新巴尔虎左旗| 舞阳县| 眉山市| 黄陵县| 肇东市| 平安县| 张家川| 家居| 祁门县| 兴仁县| 娄底市| 呼伦贝尔市| 改则县| 邵东县| 通江县| 怀化市| 五家渠市| 永顺县| 蓬溪县| 商城县| 通榆县| 安远县| 布拖县| 岑巩县| 屏山县| 乐业县| 揭西县| 松阳县| 土默特右旗| 湖州市| 潞城市| 冕宁县| 冕宁县| 博野县| 中西区| 仁布县| 汉阴县|