• shell编程中的小问题


    1、变量用=赋值时左边不能有空格。例如userName =nihao回车后会报userName:未找到命令。因为这里把userName当做命令来处理了。正确的做法是userName=nihao。
    仔细才是最重要的,像这样的小问题真是很难发现。不过在用vim编辑器时有高亮显示命令是白色的,变量时绿色的。

    2、用read -p 命令读取用户输入时,在-p后的提示后的变量名必须要有空格。例如read -p "Input your name:"Name会输出Input your name:Name,此时用户的输入不会按预期给Name。正确的做法是read -p "Input your name:"  Name(Name前的空格是必须的)。

    3、在用==进行字符串比较时,==前后必须要有空格,若没有则是一直为真。例如:

    #!/bin/bash
    #
    if [[ "1"=="2" ]];then
            echo "xiangdeng"
    else
            echo "budeng"
    fi
    

     只会输出xiangdeng,必须将[[ "1"=="2" ]]改成[[ "1" == "2" ]]才可以。

     4、[[]]和[]一般可以替换使用,但在=~(即在模式替换的时候)时必须使用[[]]

    5、if [ ! -e "/etc/passwd" ]这里!和后面的-e要有空格。

    6、算术运算需注意什么时候加$,例如下面sum=$[sum+=$num],里面的sum不能加$,因为这是变量赋值,而算完后在[]外面加$,是取变量的值。

    #!/bash/bin
    #
    declare -i sum=0
    for num in {2..4};do
    sum=$[sum+=$num]
      shift
    done
    echo $sum
    

     7、字符串测试中用到=~去通配两边的时候在右边通配项不能加引号。例如 [[ $? -eq 0 ]] && [[ "$isblock" =~ .*block.* ]],在.*block.*上是不能加""的,如果加上代表完全匹配。两边必须一样才算匹配成功。

    8、在grep匹配中,右边匹配的内容若含有-需要用转义,否则不能正常匹配。如echo -20|grep "-20"

  • 相关阅读:
    卡尔曼滤波器的简单推导
    data_quick 进度
    面试
    MapServer+TileCache+Apache+Python24 构建KS数据服务器
    PYTHONPATH 可以跨版本 方便使用 (本文为windows方法)转~
    20130923
    20130909
    error C2504 类的多层继承 头文件包含
    int long 等基础类型在不同平台的大小
    mysql python image 图像存储读取
  • 原文地址:https://www.cnblogs.com/Jc-zhu/p/4585586.html
Copyright © 2020-2023  润新知