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