shell 编程 linux 目录中空格的问题

shell 把目录 “aa bb” 解析成了两个目录:目录 “aa” 和 “bb”
问题的原因是 Linux 命令行工具和Shell都是默认以空格、Tab、回车做为值与值之间的分隔符,而不是做为文件名的一部分。
可以通过修改Linux命令行工具和Shell的默认分隔符来解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#! /bin/bash
function read_dir(){

MY_SAVEIFS=$IFS
# IFS=$(echo -en "\n\b")
IFS=$'\n'
for file in `ls $1`
do
if [ -d "$1/${file}" ];then
read_dir "$1/${file}"
else
if [ "${file##*.}" != "mp4" ];then
if [ ! -f "$1/${file}.mp4" ];then
ffmpeg -y -i $1"/$file" -c:v libx264 -c:a copy -bsf:a aac_adtstoasc $1"/$file".mp4
fi
fi
fi
done
IFS=$MY_SAVEIFS
}
#读取第一个参数
#read_dir $1
read_dir /data/ts

参考资料:

https://blog.csdn.net/keypeople/article/details/78147288