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键继续调试即可。

  • 相关阅读:
    有什么好的自助报表工具?
    各家报表工具对国产系统的支持如何
    Jenkins构建触发器(定时构建项目)
    Windows10安装Tomcat8.5与jdk1.8.0_181(以及可能出现的问题的解决)
    uinttest断言assert
    python判断语句if
    python运算符
    selenium如何定位鼠标悬停才显示的按钮
    python列表、元组、字典
    python常用数据类型
  • 原文地址:https://www.cnblogs.com/lanchang/p/6495703.html
Copyright © 2011-2022 走看看