shell 是一个 C 写的程序, 用来使用 Linux, 访问操作系统内核
是命令语言, 又是程序设计语言
shell 编程一般指 shell脚本, 即 shell script, 不是开发 shell 本身
[?] 是一种以命令为基础的语言


脚本的执行

脚本通过解释器执行,常用的解释器有 bash 还有csh ksh 等
可以在脚本第一行通过以下方式申明所需要的解释器

#!/bin/bash

执行方式有俩种

  1. 作为可执行脚本
chmod +x test.sh    #给脚本增加执行权限
./test.sh    #使用 ./ 直接执行
  1. 作为解释器的参数
/bin/sh test.sh

使用该方法执行脚本,将无视第一行的解释器申明

Shell 的变量

变量名规范跟PHP差不多

数字字母下划线, 数字不能开头
关键字要保留

变量申明和使用

  • 申明的时候不加$符, 使用的时候加$

申明的时候变量名和等号之间不能有空格
使用的时候还可以加{ }辅助定位变量的边界
申明过的变量可以重复被赋值

name="nihao"
echo $name
echo $nameaaa    #变量不存在
echo ${name}aaa        #变量name被识别,输出 nihaoaaa
name='nihaoa'    #被重复赋值, 变成新值
  • 只读变量

通过以下方式给变量设置只读属性, 不能被改变

name='nihao'
readonly name
  • 删除变量

使用unset删除变量, 该方法不能删除只读变量

unset name

变量类型

  • 字符串

单引号和双引号的区别与PHP一致, 双引号里变量会被识别, 单引号的一律直接输出

name='nihao'
str="my name is $name"        #my name is nihao
str2='my name is  $name'    #my name is $name

单引号里不能出现单引号, 转义也不行, 可以成对出现, 作为字符串拼接
字符串的拼接, 内和外不需要连接符

str='nihao   '"zui ' le"'  !'
# nihao  zui ' le !

双引号里可以通过转义的方式直接输出双引号

str="nihao zui \" le !"
# nihao  zui " le
  • 待续

shell 命令替换

shell的命令替换有俩种方式, 使用命令替换可以把结果的输出赋值到变量里

comm=`pwd`
comm2=$(pwd)
#    comm comm2 这俩个变量的值都是pwd命令执行输出的内容

命令替换不适合需要用户输入或进程不中断的命令
其中$() 可以嵌套, 反引号不行

流程控制语句

IF语句

if    '表达式'
then
    '命令1'
    '命令2'
elif    '表达式2'
then
    '命令3'
else
    '命令4'
fi
  • 如果else分支没有要执行的, else不写
  • 在表达式中, 通常用test命令判断条件是否成立
  • [[]]是关键字, 和test命令类似