zoukankan      html  css  js  c++  java
  • shell 与 空格

    shell脚本中,不能随意添加空格,否则出错:

    1,=等号两边必须无空格。否则出错。如i =$1和i= $1都是错的。但是在()内部不限制如for ((i= 1;i < 3;i= i+1))是正确的。

    2,(())内外部括号之间无空格,( () )这样报错。但内部括号内不限制,随便如s=$(( $i+1 ))可以

    3,[]是条件判断式,所以前后内部都必须空格。其内部元素之间必须有空格才能识别,否则一律报错,如“while [ $i -lt 6 ]”少一个空格都报错。总之,[]所在行每个独立元素前后都必须有空格(不是一起的就必须空格)。-gt,-lt,-ge,-le,-ne

    另外,单引号是字符串限定符,将内部内容作为字符串。而双引号和{}是变量限定符,内部作为变量处理

    例子:

    #!/bin/bash
    for ((i= 1;i < 3;i= i+1))
    do
        echo $i;
        echo '$i';
        echo "$i";
    done
    
    while [ $i -lt 6 ]
    do
         i=$(( $i+1 ))
         echo $i
    done
    s=$(( $i+1 ))
    echo $s

    再如: bin=`dirname "$0"`  如果写成bin =`dirname "$0"`就报错

    #!/usr/bin/bash
    
    source /etc/profile
    
    bin=`dirname "$0"`
    echo $bin
    echo "$bin"
    echo '$bin'
    echo ${bin}
    echo "${bin}"
    #inputfile="/home/deve_test_user/liu/observer_report_20130915155111"
    inputfile="$bin/observer_report_20130915155111"
    echo $inputfile
    echo ${inputfile}
    echo "$inputfile"
    echo "${inputfile}"
    
    输出:
    
    .
    .
    $bin
    .
    .
    ./observer_report_20130915155111
    ./observer_report_20130915155111
    ./observer_report_20130915155111
    ./observer_report_20130915155111

    从例子中可以看出:

    1.{}和“”对于变量没有影响。有没有一样

    2.单引号''是变量成为字符串,echo '$bin'输出为$bin

  • 相关阅读:
    【杭电】[2071]无限的路
    【杭电】[1161]Eddy's mistakes
    【杭电】[1859]最小长方形
    【杭电】[2083]简易版之最短距离
    【CodeForces】[614A]Link/Cut Tree
    【杭电】[2076]夹角有多大
    【杭电】[2055]An easy problem
    【杭电】[2036]改革春风吹满地
    【杭电 】[2040]亲和数
    【杭电】[2044]一只小蜜蜂...
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/7899065.html
Copyright © 2011-2022 走看看