最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年02月05日 09:35:56   作者:的神等等  
這篇文章主要介紹了處理Shell腳本中帶有空格的變量,本文主要是通過bash腳本對于含空格文件處理方法,需要的朋友可以參考下

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

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

#$1: 遍歷的文件夾
rootDir=$1
cd $rootDir
allAudioFile=$(find $1 -name "*\.mp3")
for oneAudioFile in $allAudioFile
do
  mv -f $oneAudioFile  $rootDir
done

通過set -x將執(zhí)行信息打印出來,發(fā)現(xiàn)可以執(zhí)行到,但是執(zhí)行過程提示找不到對應(yīng)的文件名,mv對應(yīng)的source文件并不是原本的文件名,通過對比發(fā)現(xiàn)原來是文件名中含有空格,導(dǎo)致在for循環(huán)的過程中并沒有將完整的文件名取出來;

例如有文件a b.mp3這時候在for循環(huán)的時候會有下面的打?。?/p>

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

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

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

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

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

#$1: 遍歷的文件夾
rootDir=$1
cd $rootDir
allAudioFile=$(find $1 -name "*\.mp3")
IFS_BACKUP=$IFS
IFS=$(echo -en "\n\b")
#IFS=$(echo -en "\n\r")
for oneAudioFile in $allAudioFile
do
  mv -f "$oneAudioFile"  $rootDir
done
IFS=$IFS_BACKUP

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

總結(jié)

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

相關(guān)文章

最新評論

略阳县| 周宁县| 昆明市| 西宁市| 青神县| 苗栗市| 邹平县| 都安| 通江县| 太湖县| 松阳县| 乌海市| 石楼县| 盘山县| 常德市| 竹溪县| 东乡县| 新民市| 神池县| 呼图壁县| 建湖县| 阜康市| 巫山县| 衡南县| 徐汇区| 塔城市| 都安| 长汀县| 曲松县| 常熟市| 红安县| 烟台市| 鹤峰县| 韶山市| 贞丰县| 华阴市| 盖州市| 山西省| 金昌市| 屯昌县| 进贤县|