今天把一些音乐复制到mp3上,在交互模式下写了一个简单的小脚本,
在执行时,出现了问题。
bash: [: 我的: binary operator expected
too many argument
思考一会,顿悟歌曲的名字是中文命名的,而且中间都是夹杂着很多“坏符号”:
空格,引号等等。应该是mv时,出现问题了,第一句的通配符*确实匹配了每个歌曲名,
但是在使用mv的时候,出现了,类似的问题:
mv 千里 之外.mp3 musics
的情况,这种情况肯定是不合适的,shell把它解释成两个文件了。
如果使用*mp3来匹配的话,就不会有问题,因为*mp3是可以匹配空格的,解释时把它
看做正常字符(而不是shell的元字符)。
bash的通配只是对当前的命令有效,对下一个命令就没有什么约束力了,特别是对其中
出现的元字符,当前命令可以把空格解释为正常字符,但是后面的命令就不可以了。