zoukankan      html  css  js  c++  java
  • Shell编程语法

    创建shell程序的步骤:
    第一步:创建一个脚本文件.sh。
    第二步:授予权限使它可以执行chmod u+x .sh
    第三步:执行 ./example 或者 sh example
    脚本调试:  
          sh -x script : 执行脚本显示所有变量的值
      sh -n script : 不执行脚本,只是检查语法,返回语法错误

    shell结构:

    1. #!指定执行脚本的shell

    2. #注释行

    3. 命令和控制结构

     

    变量: 临时变量和永久变量(环境变量)

    设置变量:  习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能用数字。

    变量赋值: 赋值号“=”两边应没有空格

      定义时赋值,如NUM=1

      将一个命令的执行结果赋给变量,如:TIME=`date`

      将一个变量赋给另一个变量,如:A=$B

    注:

    包含多个字的变量:  $NAME=Mike Ron会报错,要使用 $NAME=“Mike Ron”或$NAME=‘Mike Ron’

    单引号和双引号的区别:

       单引号之间的内容会被bash进行解释,会原封不动地指定给了变量。

           双引号中的内容只有在【$、`  `、双引号、/和换行符】五种特殊字符修饰时才可以被转义输出,其他的不动。

    删除变量: #unset NAME

    查看变量:

      列出所有变量: # set

      使用echo命令查看变量值。例如:echo $A

    位置变量:$n 这个程序的第n个参数值,n=1-9

    例如:

      ls -l file1 file2 file3

      $0 这个程序的文件名 ls -l

     
    特殊变量:

    $? 执行上一个命令的返回值   $* 这个程序的所有参数   $# 这个程序的参数个数   $$ 这个程序的PID   $! 执行上一个后台命令的PID

    变量测试语句:test    可用[]进行简化

    整数测试:

    test int1 -eq int2 测试整数是否相等

    test int1 -ge int2 测试int1是否>=int2

    test int1 -gt int2 测试int1是否>int2

    test int1 -le int2 测试int1是否<=int2

    test int1 -lt int2 测试int1是否<int2

    test int1 -ne int2 测试整数是否不相等

    字符串测试:

    test str1=str2 测试字符串是否相等

    test str1!=str2 测试字符串是否不相等

    test str1 或 test -n str1 测试字符串是否不为空

    str1 test -z str1 测试字符串是否为空

    文件测试:

    test -d file 指定文件是否目录

    test -f file 指定文件是否常规文件

    test -x file 指定文件是否可执行

    test -r file 指定文件是否可读

    test -w file 指定文件是否可写

    test -a file 指定文件是否存在

    test -s file 文件的大小是否非0

    流控制语句:

    exit语句:退出程序执行,并返回一个返回码,返 回码为0表示正常退出,非0表示非正常退出。

    选择语句:if语句  或  case---esac语句

    格式一:if 条件 then 命令 fi

    格式二:

    if 条件1  then

      命令1 

    elif 条件2 then

      命令2

    else

      命令3

    fi

    多个条件的联合:

      逻辑与:-a

      逻辑或:  -o

    格式三:

    case 变量 in   
      字符串1)            
        命令列表1
           ;;       ………      字符串n)    
        命令列表n      ;;
    esac
     
    格式四:把关键字中每一项做成类似表单的形式,通过输入交互的方式执行相应的命令
     select  变量  in  关键字
     do
      命令列表
     done

     
     

    循环语句:

    格式一:

       for 变量 in 名字表

             do

        命令列表

             done

    格式二:until当条件为真时执行;

      while 条件

      do

        命令

      done

    格式三:until当条件为假时执行;

      until 条件

      do

        命令  

      done

    跳出循环:

    break:跳出整个循环

    continue:跳过本次循环,进行下次循环

    参数移动:

    shift:参数左移,每执行一次,S#值减1,用于分别处理每个参数,移出去的参数不再可用;

     

    Shell命令:

    read命令:从键盘读数据,赋值给变量    如:read USERNAME

    expr命令:对整数型变量进行算术运算    如: $ expr 3 * 10  ,   var2=`expr 30 /  $var1`  【注意不是「'」而是 「`」】

    注意:

      运算符左右都有空格
      使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。

    awd命令: 

      awk -F  分隔符  '命令'

    注:分隔符不填,默认为空格;

    例如:输入系统中UID为0的用户名

      awd -F: '$3==0 {print $1}'  /etc/passwd

    应用函数:

    定义函数:

      函数名()

      {   

        命令列表

      }

    调用函数: 函数名  参数1 参数2…

    注:函数的中变量均为全局变量

  • 相关阅读:
    【Codeforces Round #432 (Div. 1) B】Arpa and a list of numbers
    【Codeforces Round #433 (Div. 1) B】Jury Meeting
    【 2017 Multi-University Training Contest
    【Codeforces Round #433 (Div. 2) C】Planning
    JavaEE(15)
    谓词推入引发的惨案
    子查询解嵌套in改写为exists
    子查询解嵌套not in 无法展开改写
    dump datafile block
    关于v$sql_bind_capture 的问题
  • 原文地址:https://www.cnblogs.com/zhaojinxin/p/7649915.html
Copyright © 2011-2022 走看看