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

首頁 > 網站 > 幫助中心 > 正文

處理Shell腳本中帶有空格的變量(bash腳本)

2024-07-09 22:43:21
字體:
來源:轉載
供稿:網友

本篇主要介紹bash腳本中對于含空格文件處理方式。

在批量處理音頻文件時候使用下面的腳本發現含有空格的文件名并不能被處理;

#$1: 遍歷的文件夾rootDir=$1cd $rootDirallAudioFile=$(find $1 -name "*/.mp3")for oneAudioFile in $allAudioFiledo  mv -f $oneAudioFile  $rootDirdone

通過set -x將執行信息打印出來,發現可以執行到,但是執行過程提示找不到對應的文件名,mv對應的source文件并不是原本的文件名,通過對比發現原來是文件名中含有空格,導致在for循環的過程中并沒有將完整的文件名取出來;

例如有文件a b.mp3這時候在for循環的時候會有下面的打印:

mv: cannot stat “./a” : No such file or directory

從上面的錯誤信息可以發現原本的文件名由于空格被打斷了,因此需要在for循環處理的過程中識別到文件名是含有空格的,從而對文件名中的空格不做處理;

bash使用IFS變量進行分割,所以需要修改IFS的分隔方式進而重新隔離,即需要將"/n"換行處理作為處理方式:

IFS=$(echo -en “/n/b”)IFS=$(echo -en “/n/r”)

上面的兩種方式均可(使用Ubuntu16.04),其它也可以,只需要在處理的時候將"/n"作為其中一個標識即可,因為使用find命令或者其他命令會將結果以行的形式存放到變量中;

#$1: 遍歷的文件夾rootDir=$1cd $rootDirallAudioFile=$(find $1 -name "*/.mp3")IFS_BACKUP=$IFSIFS=$(echo -en "/n/b")#IFS=$(echo -en "/n/r")for oneAudioFile in $allAudioFiledo  mv -f "$oneAudioFile"  $rootDirdoneIFS=$IFS_BACKUP

至此,bash腳本中對于含空格文件處理方式介紹完畢,當然要記得將原本的IFS內容保存下來,腳本跑完了將原本的內容放回去。

總結

以上所述是小編給大家介紹的處理Shell腳本中帶有空格的變量(bash腳本),希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德江县| 江西省| 磐安县| 光泽县| 改则县| 黎城县| 万安县| 南开区| 武功县| 南丰县| 子洲县| 兴文县| 班玛县| 卢龙县| 宁武县| 高碑店市| 茂名市| 莲花县| 盘山县| 罗江县| 桂林市| 淮北市| 宽城| 丁青县| 小金县| 普兰店市| 堆龙德庆县| 贺兰县| 河曲县| 临沭县| 喀喇沁旗| 夏邑县| 枝江市| 福贡县| 安新县| 怀仁县| 三门峡市| 汾阳市| 宜都市| 滦平县| 巴东县|