Shell script介绍

什么是Shell:
Shell 是一个用 C 语言编写的程 序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言,又是一种 程序设计语言。操作shell的是ShellScript。可以这样理解:
在这里插入图片描述

Linux 的 Shell 种类众多,常见的有:

   • Bourne Shell(/usr/bin/sh或/bin/sh) 
   • Bourne Again Shell(/bin/bash)
   • C Shell(/usr/bin/csh)
   • K Shell(/usr/bin/ksh) 
   • Shell for Root(/sbin/sh)

运行Shell的方式和区别

 1、子Shell方式: ./Shell文件名 /bin/sh Shell文件名 (作为解释器参数) 修改Path路径后直接调用文件名
 
 2、全局Shell方式 source Shell文件名 . Shell文件名

变量的命名规则:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线(_)。 
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。 
  
   注意,变量名和等号之间不能有空格

Shell 使用变量:

   • 定义变量直接书写其名字后跟赋值号“=”
   • 使用一个定义过的变量,需要在变量名前加“$”符号 km="20" echo $km echo ${km}
   • 变量名外面的花括号是可选的,是为了帮助解释器识别变量的边界: echo "have ${km}Km." 

Shell 删除变量:

     unset variable_name

Shell 变量常用的数据类型:

 • Shell 字符串: 字符串是shell编程中最常用的数据类型,字符串可以用单引号,也可以用双引 号,也可以不用引号。
 
 • 双引号:可以使用转意字符和引用变量 your_name='ywb' str="Hello, I know you are \"$your_name\"! \n" echo -e $str 
 
 • 单引号:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的

Shell 字符串的操作:

• 字符串的拼接: 直接书写即可 

• 获取字符串长度: ${#变量名} 

• 查找字符位置: expr index $变量名 “需要查找的字符” 

注意:可以是多个字符,找到哪个优先输出哪个的位置,找不到为 0 。

两个常用的表达式命令:

  • expr 用于表达式直接计算
  • let 用于数值表达式赋值

Shell 数组:

一组变量 数组中可以存放多个值;初始化时不需要定义数组大小;元素的下标由0开始。
注意: Bash Shell 只支持一维数组(不支持多维数组) 
  1. 数组的赋值:

    • 枚举式赋值: array=(1 3 6 4 2) 注意:元素之间以空格分割
    • 访问下标指定元素赋值: array[0]=10 array[1]=20 … 数组元素的访问: ${array[index]

  2. 获取数组长度:

    • echo ${#array[]}
    • echo ${#array[@]} 获取数组中的所有元素:
    • echo ${my_array[
    ]}
    • echo ${my_array[@]}

Shell 支持多种运算符:

	• 算数运算符 
	• 关系运算符
	• 布尔运算符 
	• 字符串运算符
	• 文件测试运算符 

注意:原生bash不支持简单的数学运算,但是可以通过其他命令来实现。 例如 awk 和 expr,expr 最常用。
如果想使用命令的结果可以用反引号(``)或者$()

Shell 算数运算符:
在这里插入图片描述
Shell 关系运算符: 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

在这里插入图片描述
Shell 布尔运算符:
在这里插入图片描述

逻辑运算符:
在这里插入图片描述
字符串运算符:

在这里插入图片描述

文件测试运算符:文件测试运算符用于检测 Unix 文件的各种属性
在这里插入图片描述

Shell中 echo 和 printf 命令 printf命令: 模仿 C 程序里的 printf()

• 输出变量字符串信息: printf “this is $varName\n”

• 格式化输出: printf “%05.2f%%\n” 2.356

 常用替换格式: %s(字符串) %d(整数) %f(小数) 
 常用转意字符: \n(换行) \t(制表) \r(回车) %%(一个百分号) 
 常用格式字符: -(左对齐,默认是右对齐) 0(0补位) +(输出正负号) n(整数值、字符串格式位) m.n(浮点数格式位)

Shell中 test 命令: test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件的测试。

 对数值的判断: test $[a] -eq $[b] 
 对字符串的判断: test $str1==$str2 
 对文件的判断: test -e /bin/sh

Shell流程控制: 流程控制是构成脚本编程的基本单元,即分支和循环。
分支:根据逻辑判断分情况执行的基本语法

 • if分支语法 
 • case分支语法 

循环:有限次重复执行某个逻辑

  • for循环 
  • while循环 
  • until循环

if分支语法

      if condition1 
           then command1 
      elif condition2 
          then  command2 
      else commandN
      fi 

case分支语法:

        case 值 in 
              模式1) command
               ;; 
             模式2)
             ;;
          *) 
          ;; 
          esac

for循环: items 可以是列表、数组、命令结果等

 for var in item1 ... itemN 
      do 
        command1
        command2 
        ... 
        commandN 
    done

while循环: 循环执行一系列命令直至条件为 false 时停止

while condition 
     do 
          command
     done

until循环: 循环执行一系列命令直至条件为 true 时停止

 until condition 
      do command 
 done 
 
 注意:跳出循环的break; 跳过本次循环的continue

**Shell函数函数:**是自定义的一段逻辑过程,可以反复调用

         [ function ] funname() { 
                  action; 
                  [return int;]
          }
         注意:若传参,则使用 $1-N 获取参数(与向脚本传参一致)

外部Shell script的引入 Shell 也可以包含外部脚本。这样可以很方便的封装一些公用 的代码作为一个独立的文件。

   . filename # 注意点号(.)和文件名中间有一空格 或 source filename
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值