zoukankan      html  css  js  c++  java
  • 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"

  • 相关阅读:
    将一个正整数分解质因数
    C语言中字符数组和字符串、字符串常量(转载)
    输出那一天是星期几
    吸血鬼数字—THINKING IN JAVA中一道习题
    Oracle外连接,左外连接,右外连接,内连接简析
    函数基础篇 Zeus
    程序员从初级到中级10个秘诀
    帮你免于失业的十大软件技术
    入门级XML学习(二)
    入门级XML学习(一)
  • 原文地址:https://www.cnblogs.com/Jc-zhu/p/4585586.html
Copyright © 2011-2022 走看看