shell的通配问题

今天把一些音乐复制到mp3上,在交互模式下写了一个简单的小脚本,




在执行时,出现了问题。
bash: [: 我的: binary operator expected
too many argument

思考一会,顿悟歌曲的名字是中文命名的,而且中间都是夹杂着很多“坏符号”:
空格,引号等等。应该是mv时,出现问题了,第一句的通配符*确实匹配了每个歌曲名,
但是在使用mv的时候,出现了,类似的问题:
mv 千里 之外.mp3 musics
的情况,这种情况肯定是不合适的,shell把它解释成两个文件了。

如果使用*mp3来匹配的话,就不会有问题,因为*mp3是可以匹配空格的,解释时把它
看做正常字符(而不是shell的元字符)。

bash的通配只是对当前的命令有效,对下一个命令就没有什么约束力了,特别是对其中
出现的元字符,当前命令可以把空格解释为正常字符,但是后面的命令就不可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值