linux在执行可执行文件后面跟上有通配符的参数时,做了什么?

test.sh:

#!/bin/bash
echo "$1"

此时文件夹下有下面这些文件a,aa,aaa,aaaa
当我们执行./test.sh a*时,输出如下

a

为什么会这样呢?在我们执行ls a*时输出如下:

a aa aaa aaaa

在相同的情况下我们自己的脚本却只获得了a而不是a*

修改脚本test.sh:

#!/bin/bash
echo "$#"
echo "$1"
echo "$2"
echo "$3"
echo "$4"

上面的命令作用是输出参数个数,执行的结果如下

4
a
aa
aaa
aaaa

结果发现参数不是我们传递进去的一个,而是四个。

我们用来执行命令的终端本身就是一个程序,在执行一些关于通配符的命令时,终端就已经把通配符解释成了通配后的结果,所以执行了./test.sh a*实际上等同于执行了./test.sh a aa aaa aaaa

如果想要获取a*,那么必须告诉终端这不是这个通配符./test.sh a\*或者./test.sh "a*"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 4,776评论 0 0
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,182评论 2 33
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 9,528评论 7 54
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,759评论 9 468
  • layer有很多提示框,但是我们使用最多的应该就几种,我这次做的自定义弹层是仿照美团外卖发红包的样式来的,本文使用...
    简约美阅读 5,774评论 1 2