zoukankan      html  css  js  c++  java
  • shell脚本知识

    shell脚本的执行
    1、当脚本文件本身没有可执行权限(文件x位为-号位)
               bash script-namesh script-name  
    2、路径+脚本名
             . /path/script-name 
    3、在当前shell脚本中加载另一个shell脚本
           source  /path/script-name   或 .  /path/script-name          (点号与脚本名之间有空格)
     

    shell变量
    1、变量的定义
                    格式:变量名=值 
                             变量名=变量
                    变量名要求:字母开头,由字母、数字、下划线组成。

    2、位置变量:通过命令行给程序传递执行参数
                ./script-name 参数1 参数2 参数3     
         $n             取当前执行shell脚本的第n个参数值,n=1~9,如果n>9,用大括号括起来,如${10}         ${10}就等于shell脚本第10个参数值。
         $@             这个程序中所有参数。(这是将参数传递给其他程序的最佳方法,因为它会保留所有内嵌在每个参数里的空白)。

    3、Bash预定义变量
         $?              获取上一个执行命令的返回值(0为成功,非零为执行命令未成功)。
         $$              获取当前shell脚本的进程号(PID)。

         $#             获取当前shell脚本命令行中参数的总个数。

         $0            (n=零时)取脚本路径和名称。

         $*             所有位置参数的内容。

    if条件语句

                  if [ $? -eq 0]        #上一个命令执行后的返回值是否等于0;if [ $? -ne 0 ]上一个命令执行后的返回值是否不等于0

                  then 

                        #指令

                  fi   

    while循环按行读文件的方式 

    方法一:

    cat file_path | while read line

    do

          #执行命令

    done

    方法二:

    while read line

    do

          #执行命令

    done <  file_path

    for循环列表取值循环

    for 变量 in 变量取值列表

    do

          #执行命令

    done

    for循环与while循环的按次数循环,跟C语言类似

    for((i=1;i<=10;i++))

    do

        (  #while循环

           a=1

            while((a<=4))

             do

                  e=$a

                    echo "a=$e"                  #这里并不会赋值
                    ((a++))
             done

          )

    done

    break、continue、exit、return的区别

    break n         #如果省略n,表示跳出整个循环,n表示跳出循环的层数。

    continue n      #如果省略n,表示跳过本次循环,n表示跳到第n层继续循环。

    exit n               #退出当前shell程序,n可以省略,n为本程序退出后返回的参数,也可以在下一个shell里通过 “$?” 接收 exit n 的 n 值

    return n          #用于在函数里,n 作为函数的返回值。以在下一个shell里通过 “$?” 接收 retern n 的 n 值

    把shell脚本改选成标准rpm脚本:

    #!/bin/bash
    #script-name

    #chkconfig:2345 90 20   
    #description: script-name server daemon

    通过service命令脚本进行开启和关闭:
    linux的快捷目录:/etc/rc.d/init.d
      service script-name start|stop|restart     

    通过chkconfig命令把shell脚本设置开机自启:
       查看:chkonfig --list script-name  
       设置:chkconfig script-name on
                chkconfig script-name off

     函数定义
       
    function menu(){
               echo 'helloward,bash!';
        }

    shell脚本菜单界面编写
    一、cat命令的heredoc的使用方法
      cat<<eof
               #$name输出内容
      eof

    二、字符输出,颜色控制
      echo -e "33[30;47m test 33[0m"      

    三、while死循环
               while true
               do
                      #执行命令
               done

    四、case条件语句

    例: 写一个shell脚本,传入一个参数(字母),判断传入的字母是大小还是小写

    #!/bin/bash
    echo "请输入单个字母!"  
    read $1                #读取从键盘的输入
    ######################################################
        case "$1" in
             [A-Z] )
             echo "大写"
             ;;
             [a-z] )
             echo "小写"
             ;;
             * )
             echo "不是字母"
             exit 1
        esac
    ######################################################

     shell脚本调试

     -n选项只做语法检查,而不执行脚本。
    sh -n script_name.sh     

     跟踪调试

     sh -x script_name.sh    
    进入调试模式后,Shell依次执行读入的语句,产生的输出中有的带加号,有的不带,带加号表示该条语句是Shell执行的。不带加号表示该语句是Shell产生的输出。
    在调试过程中可以按Ctrl + Z中断调试,观察结果,然后再按fg键继续调试即可。

  • 相关阅读:
    PHP 5.5.0 Alpha5 发布
    Ubuntu Touch 只是另一个 Android 皮肤?
    MariaDB 10 已经为动态列提供文档说明
    Percona Toolkit 2.1.9 发布,MySQL 管理工具
    Oracle Linux 6.4 发布
    Ruby 2.0.0 首个稳定版本(p0)发布
    Apache Pig 0.11.0 发布,大规模数据分析
    Node.js 0.8.21 稳定版发布
    红薯 MySQL 5.5 和 5.6 默认参数值的差异
    Django 1.5 正式版发布,支持 Python 3
  • 原文地址:https://www.cnblogs.com/lanchang/p/6495703.html
Copyright © 2011-2022 走看看