美文网首页程序员Shell
linux在执行可执行文件后面跟上有通配符的参数时,做了什么?

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

作者: zxdposter | 来源:发表于2016-11-12 21:57 被阅读0次

    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在执行可执行文件后面跟上有通配符的参数时,做了什么?

        本文链接:https://www.haomeiwen.com/subject/rnwqpttx.html