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

    什么是shell编程 

      Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

    变量

     1 #变量由字母、下划线、数字组成;
     2 #由字母、下划线开头
     3   
     4 #!/bin/bash
     5 #正确的写法
     6 str="hello shell"
     7   
     8 #错误写法
     9 str = "hello shell"
    10 #注意shell在要求定义变量的时候,等号两边不能有空格 
    11 #我们在使用变量的时候在变量名前面加$
    12 
    13 #删除变量
    14 unset $str
    15 
    16 #设置为只读变量,不能修改他的值(这和PHP的常量很像)
    17 readonly $str

    输出

     1 #!/bin/bash
     2 #---------------------------------echo-----------------------------------
     3 #echo和PHP的一样,都是输出,他也可以输出多个值,中间以逗号的形式隔开
     4 str="hello shell"
     5 str1="hello PHP"
     6 echo $str,$str1 #同时输出变量str、str的值
     7 #双引号和单引号也和PHP的一样,单引号不解析变量,双引号解析变量
     8 
     9 #在输出的时候也和PHP一样也可以加一些换行符之类的操作
    10 
    11 echo "hello Shell
    "#注意换行符和字符串不能有空格
    12 echo "hello PHP"
    13 
    14 #-----------------------------------printf--------------------------------
    15 printf "%-10s %-4s" 姓名  性别 #"-"标识左对齐,没有就表示右对齐
    16 printf "%-10s %-4s" Shell 男 #“%-”后面的数字,标识显示的长度
    17 
    18 #printf和C语言的一样,对输出进行格式化,
    19 #%s:标识输出的是字符串
    20 #%d:输出的是整型
    21 #%f:输出的是浮点型
    22 #%c:输出的是字符

    字符串

     1 #!/bin/bash
     2 #字符串的三中写法
     3 
     4 echo hello world
     5 echo 'hello world'
     6 echo "hello world"
     7 
     8 #获取字符串的长度
     9 str="hello world"
    10 echo ${#str}
    11 
    12 #字符串的截取
    13 str="hello world"
    14 echo ${str:1:2} #第一个冒号的数字是开始位置,后面的数字是截取的长度
    15 
    16 #查找字符串
    17 str="hello world"
    18 echo `expt index "$str" o` #输出o第一次出现的索引下标,下标从1开始
    19 
    20 #拼接字符串
    21 echo "hello"world" #输出的是helloworld
    22 echo 'hello''world'

    运算符

    算数运算符

    运算符 描述 举例
    + 加法 `expr $a + $b`
    - 减法 `expr $a - $b`
    * 乘法 `expr $a * $b`
    / 除法 `expr $a / $b`
    % 求余 `expr $a % $b`
    = 赋值 a=$b
    == 相等(用于比较两个数字) [ $a == $b ]
    != 不等(用于比较两个数字) [ $a != $b ]

    关系运算符

    运算符 描述 举例
    -eq 检测两个数是否相等 [ $a -eq $b ]
    -ne 检测两个数是否不等 [ $a -nq $b ]
    -gt 大于符 [ $a -gt $b ]
    -lt 小于符 [ $a -lt $b ]
    -ge 大于等于符 [ $a -ge $b ]
    -le 小于等于符 [ $a -le $b ]

    布尔运算符

    运算符 描述 举例
    非运算 [ $a ! $b ]
    -o 或运算 [ $a -o $b ]
    -a 与运算 [ $a -a $b ]

    字符串运算

    运算符 描述 举例
    str 检测字符串是否为空 [ str ]
    -n 检测字符串的长度,长度不为空返回TRUE [ -n str ]
    -z 检测字符串的长度,为空返回TRUE [ -z str ]

    文件测试运算符

    运算符 描述 举例
    -f 是否为普通文件 [ -f $file ]
    -d 是否是目录 [ -d $file ]
    -r 是否为可读文件 [ -r $file ]
    -w 是否为可写文件 [ -w $file ]
    -x 是否为可运行文件 [ -s $file ]
    -e 文件是否存在 [ -e $file ]
    -s 文件是否为空 [ -s $file ]

    逻辑运算

    运算符 描述 举例
    && 逻辑与 [ $a && $b ]
    || 逻辑或 [ $a || $b ]

    数组

     1 #!/bin/bash
     2 
     3 arr=(0 1 2 3 4 5 6 4 8 9 7)#数组的元素,以空格隔开,下标从0开始
     4 
     5 #获取某个下标的值
     6 echo ${arr[0]} #获取下标为0的值
     7 
     8 #获取数组所有的值
     9 echo ${arr[@]}
    10 echo ${arr[*]}
    11 
    12 #获取数组的长度
    13 echo ${#arr[@]}

    传递参数

     1 #首先创建一个test.sh的shell文件
     2 #!/bin/bash
     3 echo "运行的文件名是: $0"
     4 echo "输入的第一个参数是: $1"
     5 echo "输入第二个参数是: $2"
     6 
     7 #我们在命令行输入
     8 ./test.sh 1 2 #第一个参数的值是1,第二个参数的值是2
     9 
    10 #接收参数的格式是$加参数的标识
    11 
    12 #获取所有的参数
    13 echo "输出所有的参数:$*" #输出的格式是:"1 2 3 4"
    14 echo "输出所有的参数:$@"#输出的格式是: "1" "2"  "3"
    15 
    16 #获取参数的个数
    17 echo "输出参数的个数:$#"

    流程控制

    if-else

     1 #!/bin/bash
     2 #-------------------------------if-else----------------------------------
     3 str="123"
     4 if [ -n $str ]
     5 then
     6      echo "当前字符串不为空"
     7 else
     8      echo "当前字符串为空"
     9 fi
    10 #-------------------------------if-elif-else-------------------------- str=100
    11 if [ $str -gt 50 ]
    12 then
    13      echo "该数大于50"
    14 elif [ $str -lt 30 ]
    15 then
    16     echo "该数小于30"
    17 else
    18      echo "数据有误"
    19 fi

    for循环

    1 #!/bin/bash
    2 for loop in 1 2 3 4 5
    3 do
    4     echo $loop
    5 done

    while循环

    #!/bin/bash
    str=10
    while (($str > 0))
    do
        echo "hello"
        let "str--" 
    done

    case

     1 #!/bin/bash
     2 str=1
     3 case $tr in
     4     1) echo  "输出1"
     5     ;;
     6     2) echo "输出2"
     7     ;;
     8     *) echo "请检查你的输入"
     9     ;;
    10 esac

    函数

     1 #!/bin/bash
     2 demo(){
     3    echo "这是一个函数"  
     4 }
     5 demo#调用函数
     6 
     7 #---------------------------------函数的传参-----------------------------
     8 demo(){
     9   echo "这是第一个参数:$1"
    10   echo "这是第二个参数:$2"       
    11 }
    12 demo 1 2#1就是第一个参数的值,2就是第二个参数的值

    输入输出重定向

     1 #!/bin/bash
     2 #将输出重定向到file
     3 command > file
     4 
     5 #将输入重定向
     6 command < file
     7 
     8 #将输出追加到file
     9 command >> file
    10 
    11 #将输出文件进行合并
    12 n >& m
    13 
    14 #将输入文件进行合并
    15 n <& m
    16 
    17 #-----------------------文件的类型--------------------------
    18 command 0 > file 将读取的数据写入file
    19 command 1 > file  将输出的数据写入file
    20 command 2 > file 将错误信息写入file

    文件包含

    1 #!/bin/bash
    2 #文件的包含其实就是文件的引用,就像PHP的include、require一样,在一个#文件里面引用另一个文件
    3 #两种方式
    4 
    5 . ./test.sh
    6 
    7 source ./test.sh
    8 
    9  
  • 相关阅读:
    pip错误:'utf-8' codec can't decode byte解决方法
    windows中python2与python3共存
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    项目需求分析报告答辩总结
    项目选题报告答辩总结
    项目UML设计(团队)
    # 第七次作业--项目需求分析(团队)
    结对项目--第二次作业
  • 原文地址:https://www.cnblogs.com/meichao/p/9509967.html
Copyright © 2011-2022 走看看