国产探花免费观看_亚洲丰满少妇自慰呻吟_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腳本),希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 八宿县| 大埔县| 万山特区| 延边| 东山县| 古田县| 封丘县| 钟山县| 庆城县| 临清市| 威海市| 辽源市| 林口县| 巫溪县| 陇川县| 宽甸| 华阴市| 广安市| 南康市| 新蔡县| 清水县| 洛南县| 内黄县| 云南省| 辽宁省| 固安县| 六枝特区| 海伦市| 曲阳县| 张家港市| 八宿县| 邵武市| 临汾市| 固始县| 洛宁县| 正定县| 靖西县| 普定县| 张家港市| 广州市| 千阳县|