zoukankan      html  css  js  c++  java
  • shell 脚本学习之一 ------let,echo,变量

    转自:http://blog.chinaunix.net/uid-26827001-id-3154024.html

    首先看到好多以这样开头的    #!/bin/bash   这个是告诉系统 解释此脚本文件的Shell程序

    # 这个是注释行,当行有效
    脚本程序一般用 xx.sh 文件表示,这样一样就可以看出文件的属性,当然也可以不这样
    一个脚本程序写完后,如果要执行它,则必须先赋+x  执行权限给它 
    例如:chmod +x xx.sh,然后用命令 ./filename  执行
     以下是一些知识点:
    1. echo :用于显示(不带参数,如果有多行则换行输出)   例如:echo  "hello shell"  
        如果加上参数 -n  表示如果有多行的话,将不换行输出
        点击(此处)折叠或打开
    1. #!/bin/bash
    2. # filename is while.sh
    3. count=0
    4. while(($count < 5 ))
    5. do
    6. echo -n " count=" $count
    7. let count=count+1
    8. done
           顺便说一句,linux提供2中命令:一种是内部命令,一种是外部命令。解释执行内部命令要比外面命令快的   多, 同时,解释内部命令时候,shell不需要创建子进程,而外部命令则需要创建子进程,这就增大了系统的开销。查看是不是内部命令,可以用如下命令:type  command   例如:type echo
    2.
     $xx  表示引用变量:如上面的代码中,第三行定义了变量count, 第四行,第六行 $count  则引用该变量。
    3. 位置
    变量  : $0 文件名,$1 第一个参数 $2 第二个参数

       点击(此处)折叠或打开

    1. #!/bin/bash
    2. #filename is first.sh
    3. #have 3 parameter to first.sh
    4. #command is: ./first.sh 1 2 3
    5. # $#:传入脚本的参数个数
    6. # $*:显示所以的参数,并以空格隔开
    7. # $0:命令本身,即要执行的文件名
    8. # $1:第一个参数
    9. # $2:第二个参数
    10. # $3:第三个参数 后面一样 ~等等

    11. echo "number of vars:"$#
    12. echo "var of vars:"$0
    13. echo "first var:"$1
    14. echo "second var:$2
    15. echo "third var:$3
    4. let :用来执行算数运算和数值表达式测试。
        let 命令的替代表示形式是: ((算术表达式)) ,这样做的好处是如果表达式中含有特殊的字符,可以告示shell 进行特殊处理:例如,let ″val=a|b″。如果不括起来,Shell会把命令行let val=a|b中的“|”看成管道符,将其左右两边看成不同的命令,因而无法正确执行。
        以下代码执行结果为:1 3 7 10

    点击(此处)折叠或打开

    1. #!/bin/bash
    2. #filename is let.sh

    3. i=1
    4. echo "i="$i
    5. let i=i+2
    6. echo "i="$i
    7. let "i=i+4"
    8. echo "i="$i
    9. ((i+=3))
    10. echo "i="$i
    5. 函数调用:声明函数 function name(){~~~~},函数的调用,直接写函数名称name即可。

    点击(此处)折叠或打开

    1. #!/bin/bash
    2. # filename is second.sh
    3. # 函数申明和调用
    4. function fun1(){
    5. local a="hello world"
    6. echo "函数调用成功 "$a
    7. }
    8. echo "函数调用前"
    9. fun1
    10. echo "函数调用结束"
    6. Shell中的变量种类:局部变量和全局变量
            局部变量 是在函数中用local 声明的变量:他的作用域是在函数调用开始到函数结束。
            全局变量 在shell脚本下声明的变量,他的作用域是整个shell的生存周期内。shell结束,全局变量的周期也结束。

    点击(此处)折叠或打开

    1. #!/bin/bash
    2. #filename is localvar.sh
    3. var1="hello shell"
    4. function fun(){
    5. #定义局部变量
    6. local var2="hello local variable"
    7. echo "在函数中 使用局部变量 var2="$var2
    8. echo "调用全局变量1  var1="$var1
    9. }

    10. fun
    11. echo "在函数外调用 局部变量 var2="$var2
    12. echo "调用全局变量2  var1="$var1
    补充:环境变量、位置变量、标准变量、特殊变量等
        环境变量:用于所有的用户进程,可以看成是windows下的环境变量,用export定义:如
                  export LOGNAME="fjsm20", 可以用env或export查看系统环境变量
        位置变量:就是调用函数时候的参数,例如:./first.sh 11 22 33 如上面的第3知识点
        标准变量:就是bash环境建立的一些标准环境的标量,他会自动去解析,基本都在/etc/profile中定义了有EXINIT,HOME,IFS,LOGNAME,MAIL,MAILCHECK等(引用网上资料)

         特殊变量: $# 参数个数,$* 列出所有参数,$!显示后天脚本的进程Id ,$$显示当成脚本的进程id,$? 最后命令退出的状态,0 表示正常
  • 相关阅读:
    Delphi 2010下安装IOComp
    为自定义控件的某个属性添加像Winform控件中属性的注释
    C#WinForm仿qq窗体拖到windows窗体边上时,自动隐藏C#WinForm
    给图片添加水印,解决GIF添加水印的问题(无法从带有索引像素格式的图像创建 Graphics 对象)
    怎样把Image数据放入数据库
    取消IE“已限制此网页运行可以访问计算机的脚本
    sql 二进制文件的导入导出
    [转载]数据结构笔试题基础
    [转载]搜索算法(含基本搜索算法与深度搜索与广度搜索算法等思想)
    [转载]面试笔试总结
  • 原文地址:https://www.cnblogs.com/alan666/p/8312044.html
Copyright © 2011-2022 走看看