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

首頁 > 開發 > Linux Shell > 正文

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

2020-07-27 18:43:05
字體:
來源:轉載
供稿:網友

本篇主要介紹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腳本),希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武宣县| 邮箱| 无极县| 满洲里市| 社旗县| 胶州市| 扬州市| 榆树市| 南城县| 夏邑县| 泰顺县| 松溪县| 双鸭山市| 自治县| 南岸区| 应用必备| 连江县| 房产| 渑池县| 湘阴县| 重庆市| 邯郸县| 墨玉县| 霸州市| 桑植县| 茂名市| 和静县| 札达县| 大港区| 吐鲁番市| 彭水| 城市| 巫山县| 平乐县| 光泽县| 新竹县| 深州市| 贺州市| 蓝山县| 太和县| 仙游县|