zoukankan      html  css  js  c++  java
  • shell 脚本入门

    shell script 是一个程序化脚本,使用shell语法跟linux命令完成的一个程序。

    注意事项:

      文件开头: #!/bin/bash

      文本以enter符号作为开始执行该行语句,用跳脱符 enter使命令接着下一行写

      # 号作为批注行

    执行脚本:

      首先赋予执行权限:chmod +x filename.sh

      绝对路径执行:/home/../filename.sh

      相对路径执行:./filename.sh

      将filename.sh放在path目录下,直接执行filename.sh

      借用bash执行:bash filename.sh 或者 sh filename.sh

    常用操作:

      输出:echo [-ne] 字符串 【说明 -n字符串不自动换行, -e 对一些字符做特殊处理

        如: a 发出警告声
              删除前一个字符
                c 最后不加上换行符号
                f 换行但光标仍旧停留在原来的位置
                换行且光标移至行首
                光标移至行首,但不换行
                插入tab
                v 与f相同
                \ 插入字符

      退出程序: exit n 【说明 n位数字,常见的为0,可以使用$? 获取这个n值。

      获取屏幕输入信息: read -p 字符串 变量名 【说明 将字符串赋给变量。

      显示日期:$(date +%Y%m%d) 将当前日期格式化为年月日

      条件判断:test

        test -e /filename && echo "exist" || echo "Not exist"

        文件或目录类型判断:

           -e 文件或目录存在

           -f  存在且为文件

             -d 存在且为目录

        文件或目录权限判断:

             -r 文件或目录可读

           -w 文件或目录可写

           -x 文件或目录可执行

           -s 文件或目录存在且为非空

        文件间比较:

           -nt (newer than) 【test file1 -nt file2】

           -ot(older than)

              -ef 相同

         两整数间比较:

           -eq 相等 【test n1 -eq n2】

           -ne 不相等

           -gt 大于

           -lt 小于

           -ge 大于等于

           -le 小于等于

        字符串判断:

           test -z string 字符串为空

           test -n string 字符串非空 【-n可省】

           test str1 == str2

           test str1 != str2

        多条件判断:

           test -r file -a -x file 文件file 同时 拥有 r 和 x 权限 【-a -o !】

      条件判断 [   ]

        eg:[ “test“ == “test“ ],【注意空格键,加单双引号】

      shell 自带变量

        sh filename.sh op1 op2 op3 ,在filename文本中以$0 表示filename,$1 表示op1,$2 表示op2,$3 表示op3,$# 表示参数个数,$@ 表示“$1”“$2”“$3”,$* 表示“$1 $2 $3”

      shift 使命令参数变量号偏移

        假如sh filename op1 op2 op3 op4 在sh文本中

          echo $1   # 显示op1

            shift         #偏移一位

            echo $1   #显示op2

          shift 2      #偏移2位

          echo $1   #显示op4

      条件判断语句

        if [ 条件表达式 ] ; then

          执行语句;

        elif [ 条件表达式 ]; then

          执行语句

        fi

      case 语句

        case $变量名 in

          "第一种变量")

            操作;;

          "第二种变量")

            操作;;

          *)    #不是第一种和第二种的

            操作;;

        esac

      循环

        1.while [ 条件表达式 ]                    2.util [ 条件表达式 ]                      3.for var in con1 con2 con3 【可能的有限的值】                   

        do  # 循环开始          do                                                  do                         

          程序段             程序段                                      程序段                       

        done  # 循环结束        done             done      

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

         do

            程序段

         done

        说明:在for循环中,可以用$(seq 1 100),或者{1..100} 表示连续的数或者字母,${RANDOM} linux随机数变量。范围[0,32767]

    shell script 的调试:

      sh -nvx filename.sh  -n 不执行文件,仅查询语法问题,-v 执行前,先输出文件,-x 将文件内容和输出语句同步输出。

    source filename.sh 执行脚本:

      执行该脚本是在父bash中执行的,执行完后,可以直接 echo ${filename.sh中的变量},得到变量值;而sh filename.sh 后,echo不能输出文件中的变量名。

      

  • 相关阅读:
    selenium获取Cookie操作
    分布式锁-常用技术方案
    合成模式(Composite)-结构型
    享元模式-结构型
    桥接模式-结构型
    适配器模式-结构型
    建造者模式-创建型
    单例和原型模式-创建型
    外观(门面)模式-结构型
    JDK QUEUE队列
  • 原文地址:https://www.cnblogs.com/x-jingxin/p/7099018.html
Copyright © 2011-2022 走看看