一、shell是什么
外层应用程序–>shell(cd、ls)–>linux内核–>硬件
一个命令行解释器,用来接收应用程序/用户命令,然后调用操作系统内核
二、入门
1.以#!/bin/bash开头
2.创建一个shell脚本,输出helloworld
创建:touch helloworld.sh
编写:
#!/bin/bash
echo “hello world”
执行:sh helloworld.sh
或者 ./helloworld.sh
要chmod 777
3.在/home/hwz/目录下,创建banzhang.txt,在banzhang.txt中增加"l love cls"
#!/bin/bash
cd /home/hwz/
touch banzhang.txt
echo “ilove cls” >> banzhang.txt
4.shell中的变量
自定义变量:
(1)语法:
定义变量:变量=值(等号左右没有空格)
撤销变量:unset 变量
声明静态变量:readonly 变量,注意:不能unset 变量
(2)变量定义规则
变量名可以由字母、数字、下划线组成,不能以数字开头,环境变量名建议大写
等号两侧不能有空格
变量默认类型是字符串类型,无法直接进行数值运算
变量的值如果有空格,要使用双引号或者单引号括起来
a=“a b c”
可把变量提升为全局环境变量,其它shell程序也可以使用。export 变量名
特殊变量:
(1)$n:n为数字,$0代表该脚本名称,$1-
9
代
表
输
入
的
第
一
到
第
九
个
参
数
,
10
以
上
用
9代表输入的第一到第九个参数,10以上用
9代表输入的第一到第九个参数,10以上用{10}
(2)KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲:获取所有输入参数个数,常用于…*:把命令行中的所有参数看成一个整体
(4)
@
:
把
命
令
行
中
的
所
有
参
数
看
成
一
个
整
体
,
但
是
把
每
个
参
数
区
别
对
待
(
5
)
@:把命令行中的所有参数看成一个整体,但是把每个参数区别对待 (5)
@:把命令行中的所有参数看成一个整体,但是把每个参数区别对待(5)?:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,非0则执行不正确
#!/bin/bash
echo “$0 $1 $2”
echo $#
5.运算符
(1)基本语法:
(
(
运
算
式
)
)
或
((运算式))或
((运算式))或[运算式]
expr +、-、*、/、%(expr 运算符间要有空格)
expr 3+2
expr ‘expr 2 + 3’ *4
s=$[(3+2)*4]
echo "s“
6.条件判断
(1)基本语法
[ condition },condition前后要有空格,条件非空返回true
(2)常用判断条件
两个整数间比较:
= 字符串比较
-lt 小于 -le 小于等于
-eq 等于 -gt 大于
-ge大于等于 -ne 不等于
按照文件权限进行判断:
-r 有读的权限 -w 有写的权限
-x 有执行的权限
按照文件类型进行判断:
-f 文件存在并且是一个常规的文件
-e文件存在
-d文件存在且是一个目录
多条件判断
&&逻辑与 ||逻辑或