zoukankan      html  css  js  c++  java
  • shell script 二 判断符号【】 shift 偏移量 if then fi

    判断符号【】类似于test。但是【】有通配符及正则表达式,为了区分,利用【】来做判断时,前后都需要加空格来区分。又一个坑

    【 -z "$HOME" 】;echo $?

    例:

    1 read -p "Please input (y/n):" yn
    2 [ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK,continue" && exit 0
    3 [ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh,interrupt" && exit 0
    4 echo "i donnot know what your choice is " && exit 0
    有几个要点。[]一定要加空格。这是必须的。 “$yn” == "Y" 也一定要加空格,否则只会打印 OK,continue。也就是说,没事加个空格没毛病。但是不要加空格的时候,千万不要加空格,上篇博客就是个例子。。。。这个坑一定要填实了。要不然,问题都找不到原因出在哪。

    还有[]跟test完全是一样的,所以test那些判断啊什么的特殊控制,在这都可以用。例如上图例子中的-o。这个就是连接两个前后表达式任何一个成立都执行的意思,说白了就是  “或”

    Shell script 的默认变数 ($0,$1...)

    什么意思。意思就是某个shell script的先后执行某命令的顺序。图例

    file /etc/init.d/network

    /etc/init.d/network restart 这个后面跟着的restart就是命令,关键是,restart后面还可以跟很多命令,1 2 3 。。。script达成这个功能其实就是对参数设定好了一些变量的名称了。如下图

    所以太才会依次执行,除了这些数字变量之外,我们还有一些比较特殊的变量来呼叫这些参数,如下图

    例:

    1 echo "The script name is ==> ${0}"
    2 echo "total parameter number is ==> $#"
    3 [ "$#" -lt 2 ] && echo "The number of parameter is less than 2. stop here."& & exit 0
    4 echo "your whole parameter is ==>'$@'"
    5 echo "the 1st parameter ==>${1}"
    6 echo "the 2nd parameter ==>${2}"
    执行结果如下

     shift  参数偏移

    shift+数字,代表你要拿掉的参数的数量。从第一个参数开始。这个到底有啥用???百度一下,查了一大顿,都是一堆shift的用法云云,至于意义和作用,压根就没有,如果有人看到我的疑问,不吝赐教。谢谢

    多重判断 if then fi

     几个要点

    if xxxx ;then

    aaaaa

    fi                    判断之后要加 ; then

    if xxxxx ;then

    aaaaa

    else

    bbbbbbbbbb

    fi                    else后面什么都不要加

    if xxxxx ;then

    aaaaaa

    elif xxxxxx;then

    bbbbbbb

    else

    cccccccc

    fi                        elif后面跟if一样,都要加  ;then

  • 相关阅读:
    nginx能访问html静态文件但无法访问php文件
    LeetCode "498. Diagonal Traverse"
    LeetCode "Teemo Attacking"
    LeetCode "501. Find Mode in Binary Search Tree"
    LeetCode "483. Smallest Good Base" !!
    LeetCode "467. Unique Substrings in Wraparound String" !!
    LeetCode "437. Path Sum III"
    LeetCode "454. 4Sum II"
    LeetCode "445. Add Two Numbers II"
    LeetCode "486. Predict the Winner" !!
  • 原文地址:https://www.cnblogs.com/Lonelychampion/p/11244831.html
Copyright © 2011-2022 走看看