shell 是一个 C 写的程序, 用来使用 Linux, 访问操作系统内核
是命令语言, 又是程序设计语言
shell 编程一般指 shell脚本, 即 shell script, 不是开发 shell 本身
[?] 是一种以命令为基础的语言
脚本的执行
脚本通过解释器执行,常用的解释器有 bash 还有csh ksh 等
可以在脚本第一行通过以下方式申明所需要的解释器
#!/bin/bash
执行方式有俩种
- 作为可执行脚本
chmod +x test.sh #给脚本增加执行权限
./test.sh #使用 ./ 直接执行
- 作为解释器的参数
/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命令类似