如何在這個字符串得到文件:僅提取shell腳本文件名(目錄名)
/home/streaming/demo/youtube/Surf9B.mp4
/home/streaming/demo/Surf9B.mp4
/home/streaming/demo/youtube/test/Surf9B.mp4
我需要只在一個新的變量
如何在這個字符串得到文件:僅提取shell腳本文件名(目錄名)
/home/streaming/demo/youtube/Surf9B.mp4
/home/streaming/demo/Surf9B.mp4
/home/streaming/demo/youtube/test/Surf9B.mp4
我需要只在一個新的變量
的「Surf9B.mp4」和STOR你可以嘗試這樣的事情,但你的名字不能在其中包含「/」。
SOME_VAR=$(echo "/home/streaming/demo/youtube/Surf9B.mp4" | rev | cut -f1 -d'/' | rev)
echo $SOME_VAR
$ basename /home/streaming/demo/youtube/Surf9B.mp4
Surf9B.mp4
$ file=`basename /home/streaming/demo/youtube/Surf9B.mp4`
$ echo "$file"
Surf9B.mp4
考慮在示例中使用小寫變量名稱。 POSIX指定用於對shell和系統實用程序有意義的變量的全大寫名稱,並指定至少包含一個小寫字符的名稱空間,以供應用程序使用。請參閱http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html(關於環境變量)的第四段,但命名空間約定也適用於shell變量,因爲使用與環境變量重疊的名稱設置shell變量當時定義的將覆蓋後者)。 –
另請考慮引用您的擴展。 'echo'$ file''比'echo $ file'安全:沒有使用引號,如果文件名包含IFS中的任何字符,它們將被空格替換;如果文件名可以被解釋爲一個glob,它將被擴展結果替換(如果沒有結果存在嚴重依賴shell選項配置:'failglob'和'nullglob'都適用)。 –
您正在運行...讓我們來看看,'$()'叉一個子進程,然後'rev','cut',第二'rev'也是額外的外部工具..所以共有*四個*新程序,只是做一些bash可以做的內置?! –
'filename =/home/streaming/demo/youtube/Surf9B.mp4; echo「$ {filename ## * /}」' –
...此外,'rev'不是POSIX的一部分,是bash的一部分,甚至是Linux Standards Base的一部分,所以不保證它會被安裝在任何給定的系統。 –