• shell参数中的特殊字符


    这两天闲着,玩一下NB,从Shell下手,碰到点有意思的,顺便记下。

    写了个简单的脚本test_2,输出用户的参数:
    #!/bin/sh
    if [ $# -lt 2 ] ; then
     echo "You need 2 paramerters at less!"
     exit 0
    fi
    ONE="$1"
    TWO="$2"
    echo "Your paramerters are:"
    echo $1
    echo $2

    :wq保存;
    chmod +x test_2 使其可执行

    发现了一点有趣的,不同参数的执行结果:
    (1)无参数:
    #./test_2
    You need 2 paramerters at less!

    (2)
    #./test_2 /43 ./#$@&
    #Your paramerters are:
    /43
    ./#

    ---------------------------------------------------------------
    没有出现提示符,似乎该命令还没有执行完
    /*
     *猜测可能是因为最后一个字符“&”有什么特别含义,暂不清楚
     */
    直接回车:
    [1] Done ./test_2 /43 ./#${@}


    (3)
    #./test_2 /43 ./#$@
    #Your paramerters are:
    /43
    ./#
    #

    ----------------------------------------------------------------
    和上次输出一样,不过出现命令提示符,说明命令已执行完毕


    (4)
    #./test_2 /43 ./#$
    #Your paramerters are:
    /43
    ./#$
    #

    ----------------------------------------------------------------
    好像是正常的输出,去掉一个“@”就正常了,奇怪。


    (5)
    #./test_2 /43 ./#
    #Your paramerters are:
    /43
    ./#
    #

    ----------------------------------------------------------------
    还是正常的。
    “./test_2 /43 ./” 与“./test_2 /43 .”均正常。


    (6)
    #./test_2 /43 ./#$&
    #Your paramerters are:
    /43
    ./#$

    -----------------------------------------------------------------
    一样没有出现提示符,“./test_2 /43 ./#$”则正常。似乎可以作此结论:“&”等待用户输入才能继续执行,至于要输入什么,不得而知。



    (7)
    #./test_2 /43 ./$@
    #Your paramerters are:
    /43
    ./
    #
    -----------------------------------------------------------------
    与情况(3)对比,似乎可以发现“$@”被忽略了。


    (8)
    #./test_2 /43 ./$4@
    #Your paramerters are:
    /43
    ./@
    #
    -----------------------------------------------------------------
    太奇怪了,头都大了。

    这东西,我估计是shell在传递参数时,对某些特殊字符做了处理,使它们不能直接作为参数,这也许很正常。我大概是没看源码,不知道规则,大惊小怪而已。

  • 相关阅读:
    滴水穿石mysql添加授权用户命令
    滴水穿石修改IIS服务器的MIME类型
    滴水穿石Java静态代理
    滴水穿石MyEclipse中集成开发插件Spket
    滴水穿石Java连接Access数据库及其操作
    好站收藏
    apache缓存设置
    Linux Apache开启gzip压缩提高网页下载速度
    web制作、开发人员需知的Web缓存知识
    cookiec和session学习笔记
  • 原文地址:https://www.cnblogs.com/chutianyao/p/1308320.html
Copyright © 2020-2023  润新知