我有一个简单的Linux脚本:为什么双引号改变这一结果
#!/bin/sh
for i in `ls $1`
do
echo $i
done
在我的temp文件夹中有4档:AA,a.aa,a.ab和a.ac
当我打电话./script temp/*。??我得到:
temp/a.aa
当我打电话./script“temp/*。??”我得到:
temp/a.aa
temp/a.ab
temp/a.ac
为什么双引号改变结果?
我有一个简单的Linux脚本:为什么双引号改变这一结果
#!/bin/sh
for i in `ls $1`
do
echo $i
done
在我的temp文件夹中有4档:AA,a.aa,a.ab和a.ac
当我打电话./script temp/*。??我得到:
temp/a.aa
当我打电话./script“temp/*。??”我得到:
temp/a.aa
temp/a.ab
temp/a.ac
为什么双引号改变结果?
在第一种情况下,外壳扩展temp/*.??
到:
temp/a.aa temp/a.ab temp/a.ac
由于您只看着你的脚本中的第一个参数仅temp/a.aa
传递给LS。
在第二种情况下,由于引号,shell不执行任何扩展,并且脚本收到在调用ls
时展开的单个参数temp/*.??
。
由于不带引号的外壳扩展您的来电:
./script temp/a.aa temp/a.ab temp/a.ac
所以$1
是temp/a.aa
,而不是temp/*.??
。