日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

活用变量字符串${var%%.*}

發布時間:2024/1/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 活用变量字符串${var%%.*} 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多時候在使用Linux的shell時,我們都需要對文件名或目錄名進行處理,通常的操作是由路徑中提取出文件名,從路徑中提取出目錄名,提取文件后綴名等等。例如,從路徑/dir1/dir2/file.txt中提取也文件名file.txt,提取出目錄/dir1/dir2,提取出文件后綴txt等。

下面介紹兩種常用的方法來進行相關的操作。


一、使用${}

1、${var##*/}
該命令的作用是去掉變量var從左邊算起的最后一個'/'字符及其左邊的內容,返回從左邊算起的最后一個'/'(不含該字符)的右邊的內容。使用例子及結果如下:

從運行結果可以看到,使用該命令,可以提取出我們需要的文件名file.txt。


若使用時在shell程序文件中,可以使用變量來保存這個結果,再加以利用,如file=${var##*/}


2、${var##*.}
該命令的作用是去掉變量var從左邊算起的最后一個'.'字符及其左邊的內容,返回從左邊算起的最后一個'.'(不含該字符)的右邊的內容。使用例子及結果如下:

從運行結果可以看到,使用該命令,可以提取出我們需要的文件后綴。


如果文件的后綴不僅有一個,例如,file.tar.gz,命令${var##*.}僅能提取最后一個后綴,而我想提取tar.gz時該怎么辦?那么就要用下面所說的${var#*.}命令了。


3、${var#*.}
該命令的作用是去掉變量var從左邊算起的第一個'.'字符及其左邊的內容,返回從左邊算起第一個'.'(不含該字符)的右邊部分的內容。使用例子及結果如下:

從運行結果可以看到,使用該命令,可以提取出文件的多個后綴。

4、${var%/*}
該命令的使用是去掉變量var從右邊算起的第一個'/'字符及其右邊的內容,返回從右邊算起的第一個'/'(不含該字符)的左邊的內容。使用例子及結果如下:

從運行的結果可以看到,使用該命令,可以提取出我們需要的文件所在的目錄

5、${var%%.*}
該命令的使用是去掉變量var從右邊算起的最后一個'.'字符及其右邊的內容,返回從右邊算起的最后一個'.'(不含該字符)的左邊的內容。使用例子及結果如下:

當我們需要建立一個與文件名相同名字(沒有后綴)的目錄與對應的文件相對應時,就可以使用該命令來進行操作。例如,解壓文件的情況就與此類似,我們壓縮文件file.zip時,會在與file.zip同級目錄下建立一個名為file的目錄。

6、${}總結

其實${}并不是專門為提取文件名或目錄名的,它的使用是變量的提取和替換等等操作,它可以提取非常多的內容,并不一定是上面五個例子中的'/'或'.'。也就是說,上面的使用方法只是它使用的一個特例。


看到上面的這些命令,可能會讓人感到非常難以理解和記憶,其實不然,它們都是有規律的。

#:表示從左邊算起第一個

%:表示從右邊算起第一個

##:表示從左邊算起最后一個

%%:表示從右邊算起最后一個

換句話來說,#總是表示左邊算起,%總是表示右邊算起。

*:表示要刪除的內容,對于#和##的情況,它位于指定的字符(例子中的'/'和'.')的左邊,表于刪除指定字符及其左邊的內容;對于%和%%的情況,它位于指定的字符(例子中的'/'和'.')的右邊,表示刪除指定字符及其右邊的內容。這里的'*'的位置不能互換,即不能把*號放在#或##的右邊,反之亦然。


例如:${var%%x*}表示找出從右邊算起最后一個字符x,并刪除字符x及其右邊的字符。


看到這里,就可以知道,其實該命令的用途非常廣泛,上面只是指針文件名和目錄名的命名特性來進行提取的一些特例而已。


二、basename和dirname

${}并不是專門為提取文件名和目錄名設計的命令,那么basename和dirname命令就是專門為做這一件事而已準備的了。

1、basename

該命令的作用是從路徑中提取出文件名,使用方法為basename NAME [SUFFIX]。


1)從路徑中提出出文件名(帶后綴),例子如下:




2)從上面命令的用法中可以看到,后綴(SUFFIX)是一個可選項。所以,若只想提取出文件名file,而不帶有后綴,還可以在變量的后面加上后綴名,例子如下:


2、dirname
該命令的作用是從路徑中提取出目錄名,使用方法為 dirname NAME
使用例子如下:

這樣就提取出了file.txt文件所在的目錄。

注:該命令不僅能提取出普通文件所的目錄,它能提取出任何文件所在的目錄,例如目錄所在的目錄,如下:

它提取出了目錄dir2所在的目錄dir1.


轉載于:https://blog.51cto.com/853056088/2127935

總結

以上是生活随笔為你收集整理的活用变量字符串${var%%.*}的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。