• shell基础笔记1-变量的使用与输入输出


    1、编写shell程序的步骤:

      1、创建以.sh为扩展名的文件  如:vi hello.sh

      2、编辑脚本文件

        1、第一行以“#!”开头,声明所使用的的shell的全路径

        2、脚本中适当增加注释。注释的语法以“#”开头     

    #!/bin/bash
    #打印输出hello.sh
    echo "hello,world!"

      3、增加脚本文件执行权限 chmod 775 hello.sh

      4、运行脚本

        1、进入脚本文件目录,然后执行:./hello.sh

        2、以/bin/sh脚本名来运行,如:/bin/sh hello.sh

    2、变量的定义和引用

      1、变量的定义:(1)shell中的变量名可以有字母、数字、下划线组成,但字母不能作为变量名的第一个字符

        (2)通过赋值符符号“=”来定义一个变量的值。

          如:myname='tang'  #字符串类型,不解析任何字符串

            courses=“asdfgh”  #双引号内部会解析$和反斜杠特殊字符

            sum=100;price=1.254

            now_time=`date`  #反引号执行系统命令

        shell的变量类型只有字符串类型,所以当你不用引号引起来的时候,要保证变量的值不包含特殊符号,如空格符、美元符、&符

      2、变量的引用:使用美元符号$加变量名,来引用一个变量的值

        如:定义变量:programe_name="httpd"

          引用变量:echo $programe_name  或  echo ${programe_name}

      3、变量名外面的花括号

        是可选的,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:  

    #!/bin/bash
    for skill in php java linux db2
        do
            echo "I am good at ${skill}Script"        #帮助shell解释器识别边界
        done
        #此处如果不加{},运行结果会怎样?

    3、环境变量、局部变量以及预定义变量

      环境变量:指在操作系统中用来指定操作系统运行环境的一些参数,如:PATH,PWD,USER、当前使用的shell名称等

        常见的环境变量:PATH:系统路径

              HOME:当前用户的家

              HISTSIZE:保存历史命令记录的条数

              LOGNAME:当前用户登录名

              HOATNAME:主机名称。若应用程序要用到主机名称的话,一般是从这个环境变量中取的

              SHELL:当前用户用的那种shell

              LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量

              MAIL:当前用户的邮件存放目录

        查看环境变量:env:显示所有环境变量。

             echo $PATH:显示某一个环境变量的值

      局部变量包括:

        1、在shell脚本中由用户定义的变量。shell脚本中由用户定义的变量作用域是从被定义的地方开始,到shell结束为止,起作用域为脚本,离开本脚本变量无效

        2、在用户登录的shell中定义的变量,重新登录后该变量消失

      预定义变量:预定义变量和环境变量相类似,也是在shell默认定义了的变量。所不同的是用户只能根据shell的定义来使用这些变量,而不能重新定义它,所有的预定义变量都是由$符和另一个符号组成,

        常用的shell预定义变量有:

          $#  位置参数的数量

          $*  所有位置参数的内容

          $@  所有位置参数的内容

          $n  n为数字,$0表示命令名称。$1表示命令第一个参数,以此类推

          $?  命令执行后返回的状态,0表示成功,非0表示失败

          $$  当前进程的进程号PID

          $!  后台运行的最后一个进程号PID。很少用,了解即可

          $0  当前执行的进程名。

          如:echo $0

    4、脚本的输入输出

      1、echo 输出:命令发送数据到标准的输出设备

        echo两个重要的参数:

          -e:识别输出内容里的转义序列。echo -e "hello world"  结果:hello world

          -n:忽略结尾的换行。ehco -e -n "hello world"  结果:hello world[root@constos]$

      2、printf 输出:和echo类似,printf也可以输出变量,printf还可以安装格式输出变量。

        注:1、printf 的默认输出没有换行,换行需要自己加“ ”

          2、printf 支持格式化输出printf "Name:%s,Age:%d,Address:%s " $name $age $address

      3、read 输入。读取标准输入设备的下一行,标准输入中的新一行到换行符前的所有字符串都会被读取,并赋值给对应的变量,可以结合echo一起实现读取并输出的功能

    [root@centos6 app]# vi read_echo.sh
    #
    !/bin/sh echo "please input your ipaddress" read ipaddr echo "my ip address is $ipaddr"

    运行:sh read_echo.sh

    结果:please input your ipaddress

       192.168.1.103

        给出输入提示的read用法:read -p "提示信息:" myaddr

          例:read -p "please input your username:" username

      4、<< 按行输入。可以被认为是一种重定向符。重定向脚本文件中的一行作为到一个命令的输入

        操作符<<被放在输入重定向的命令之后,紧跟在<<的各行命令的输入,输入的结尾通过文件结束符(ctrl+D)表示,也可以自己定义定界符,定界符后的单词作为输入各行的定界符

        注意结束时的定界符一定要顶格写。

        例:1、用<<符作为每一行的命令输入来操作数据库。    

    [root@centos6 app]# vi operate_mysqldb.sh
    #!/bin/sh
    /usr/local/mysql5.6.17/bin/mysql <<!    #自定义定界符
    status
    select count(*) from test.student
    !

          2、自动连接ftp服务器来下载数据

     1 #!/bin/sh
     2 #演练用“<<”按行输入来上传下载文件
     3 ftpserver=192.168.1.100
     4 rq=`date+%Y%m%d`
     5 cd /root/jcy/mydocs
     6 ftp -i -n <<!
     7 open $ftpserver
     8 user oracle post
     9 cd ems
    10 bin
    11 get $rq.dat
    12 bye
    13 !
    View Code

     

  • 相关阅读:
    植物大战僵尸 辅助 总结
    C# 操作地址 从内存中读取写入数据(初级)
    c# math
    c# 获取屏幕图片
    从客户端(editorValue="<p>xxxx</p>")中检测到有潜在危险的 Request.Form 值。
    三种常见的SQL分页语句
    Windows Installer 服务无法启动!
    无法访问windows installer服务
    mssql2000数据库执行SQL语句来创建数据库以及数据表还有索引
    如何安装aspjpeg
  • 原文地址:https://www.cnblogs.com/guang2508/p/12701237.html
一二三 - 开发者的网上家园