什么是shell?
一个用C语言编写的程序
shell命令可以理解为Linux命令
业界所说的 shell 通常都是指 shell 脚本,shell脚本可以理解为多个shell命令的集合
如果有人问你,你会shell吗?那你就要反问他,你问的是shell命令还是shell脚本
shell种类
Linux默认的shell解释器为/bin/bash
除此之外还有ash,zsh,ksh等
shell编写规范
- shell脚本文件规范
以’sh’结尾,文件名不可有中文和空格 - 代码规范
#!/bin/bash 指定告知系统这个脚本要使用的shell解释器,其中#为注释符号
shell命令
创建shell脚本
使用命令touch或者vi
touch test.sh
vi test.sh
第一个shell脚本
#!/bin/bash
echo "Hello World !"
执行shell脚本
脚本执行需要有执行权限
chmod +x test.sh
刚创建的脚本文件没有在环境变量PATH中配置,因此执行时需通过脚本路径
/bin/bash test.sh
一般来说使用’./'来告诉系统在当前系统中查找
./test.sh
shell变量
变量定义
class_name="yuwei"
注意,变量名和等号之间不能有空格
同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线 _。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)
使用变量
在调用变量时,需要在变量前面加符号’$’
变量外的花括号可加可不加,加花括号是为了帮助解释器识别变量的边界
echo $class_name
echo ${class_name}
关于变量中单双引号
#!/bin/bash
str="hello world!"
echo $str
若为单引号'hello world!',则输出$str
若为双引号"hello world!",则输出hello world!
单引号中任何字符都会原样输出,单引号中的变量无效;
单引号作为字符串拼接使用;
双引号中可以有变量,并且可以使用转义符。
删除变量
使用 unset 命令
unset class_name
shell中的注释
一般的注释方式是在行首添加字符’#’
如果是多行注释就显得比较麻烦
可以采用以下方式
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
其中的EOF可以换成其他的任意字符
反引号
在shell脚本中需要执行shell命令并将执行的结果赋值给变量,需要加上反引号
#!/bin/bash
dt=`date + '%F %T'`
echo $dt
只读变量
基本语法:
readonly 变量
#!/bin/bash
a=10
readonly a
a=20
echo $a
输出结果为10,因为设置了只读,赋值就不成功了
接受用户输入的变量
基本语法:
read -p '提示信息' 变量名称
案例:接收用户输入文件路径,并创建该文件
#!/bin/bash
read -p '请输入路径' filepath
touch $filepath
echo '文件创建成功'
ls -l $filepath
条件判断语句
语法一:只有一个条件
if 条件判断语句
then
语句1
语句2
···
fi
语法二:两个条件判断
if 条件判断语句
then
语句1
语句2
···
else
语句3
fi
语句三:多个条件
if 条件判断语句
then
语句1
语句2
···
elif 条件判断语句2
then
语句3
else
语句4
fi