shell编程

什么是shell

1. Shell 是一个用C语言编写的应用程序,它是用户使用Linux的桥梁。

2. Shell既是一种命令语言,又是一种程序设计语言。

3. Shell是值一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

脚本和环境

Shell脚本, 它是一种为shell编写的脚本程序。

Shell环境,使用一个能编写代码的文本编辑器 vi 和一个能解释执行的脚本解释器。如:/bin/bash。

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

1. /usr/bin/sh 或 /bin/sh   

2. /bin/bash (常用、默认)

3. /usr/bin/csh

...

作用

在Shell中,将许多命令写在一起,让用户很轻松的就能执行一个文件的Shell脚本,就能够一次执行多个命令。

基本格式

  • 创建文件:vi 脚本名字.sh

脚本第一行格式:

#!/bin.bash

符号#!用来指定该脚本文件的解析程序,这里使用的是bin目录下的bash解析器。

第一个脚本:vi hello.sh

#!/bin/bash

echo hello word

脚本执行:

1. /bin/bash 脚本名  (推荐)

2. chmod +x 脚本名   -> ./脚本名

 注意事项:

  1. chmod + x file 加上执行权限,否则会提示无执行权限。
  2. 脚本后缀名可以任意修改,仍然可以正常运行。

Shell中的变量

变量:在程序运行过程中可以改变的量。

变量命名规则:

  1. 首个字符必须为字符(a-z,A-Z)。
  2. 中间不能有空格,可以使用下划线(_)。
  3. 不能使用标点符号。
  4. 不能使用bash里的关键字。

变量声明格式 : 变量名 = 变量值 

注:变量名和=之间不能有空格。

#!/bin/bash

you_name="qt"
echo $you_name  # 变量名前需要加$,或者 ${you_name},加花括号是为了帮助解释器识别变量的边界。

注意:在echo 字符串时,如果里面存在变量时,这个字符串要用""包裹,而不能使用‘‘,
echo ‘this is $you_name‘ # this is $you_name
echo "this is $you_name" # this is qt

 

只读变量

使用 readonly 命令可以将变量定义为只读变量。

#!/bin/bash
  
readonly you_name="qt"
echo $you_name  # 输出qt
you_name=‘tt‘
echo $you_name  # 报错,并输入 qt

删除变量

使用 unset 命令可以删除变量

#!/bin/bash

you_name="qt"
echo $you_name  # qt
unset you_name
echo $you_nam  # 空

注:当变量是 readonly 时,使用 unset 会报错

字符串操作

  1. 拼接字符串
    • #!/bin/bash
      name="hello"
      res="$name word"
      echo $res
  2. 获取字符串长度:${#变量名}
    • #!/bin/bash
      name="hello"
      res="$name word"
      echo ${#res}
  3. 提取子字符串:${变量名:截取字符的下标:截取的长度}
    • #!/bin/bash
      name="hello"
      res="$name word"
      echo ${res:1:4}
      

数组

定义:用括号代表数组,数组元素用“空格”符号分隔开。

形式:数组名=(值1 值2 ... 值n)

#!/bin/bash
num=(44 11 ‘hello‘ ‘word‘)  # 定义数组并赋值,由此可见,数组中可以存放不同类型的数据
echo ${num[0]}  # 获取数组中下标为0的值
echo ${num[2]}  # 获取数组中下标为2的值
  1. 获取数组中所有的元素:${数组名[@]}
    • #!/bin/bash
      num=(44 11 ‘hello‘ ‘word‘)
      echo ${num[@]}  # 获取所有元素
      echo ${num}  # 当不带下标时,默认输入第一个元素,44
      
  2. 获取数组的长度:${#数组名[@]}
    • #!/bin/bash
      num=(44 11 ‘hello‘ ‘word‘)
      echo ${#num[@]}  # 4
      
  3. 获取数组中单个元素的长度:${#数组名[下标]}
    • #!/bin/bash
      num=(44 11 ‘hello‘ ‘word‘)
      echo ${#num[1]}  # 2
      

注释

以“#”开头的行就是注释,会被解释器忽略。第一行的#是解释说明,并不是注释!

sh里没有多行注释,只能每行接一个#。

基本运算符

> 算术运算符

> 关系运算符

> 布尔运算符

> 字符串运算符

> 文件测试运算符

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

两个数相加(注意使用的是反引号` 而不是单引号 ‘)。

#!/bin/bash

exp=`expr 2 + 2`  # 表达式之间需要用空格
echo "sum: $exp"

  ....持续更新

shell编程

上一篇:操作系统第2次实验报告:创建进程


下一篇:ROS常用命令和VIM常用命令