我有一个简单的Linux脚本:
#!/bin/sh for i in `ls $1` do echo $i done
在我的临时文件夹中有4个文件:aa,a.aa,a.ab和a.ac.
当我打电话给./script temp/*.?? 我得到:
temp/a.aa
当我打电话给./script"temp/*.??" 我得到:
temp/a.aa temp/a.ab temp/a.ac
为什么双引号会改变结果呢?
在第一种情况下,shell扩展temp/*.??
为:
temp/a.aa temp/a.ab temp/a.ac
由于您只查看脚本中的第一个参数,因此只temp/a.aa
传递给ls.
在第二种情况下,由于引号,shell不执行任何扩展,并且脚本接收temp/*.??
在调用中展开的单个参数ls
.