Linux 介绍:
Linux特点: Linux 下一切皆文件
Linux目录特点:

Linux的内核架构:

shell 定义与含义:
- 是一个编程语言 —> shell 脚本语言
- 是一个应用程序 —> 解释器
- 交互式的解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能—称之为 shell 命令解析器
Shell 命令:
chmod 命令:
- chmod 命令是用来改变文件权限
- 如:chmod 777 shell.sh 表示修改文件shell.sh的权限为777
#!指定命令编译器:
- shell 脚本语言中的第一行一般为指定命令解释器
- #!:用来声明脚本由什么 shell 解释,否则使用默认 shell
- 如:#!/bin/bash 指定编译器
#为单行注释符号
echo 命令:
- echo 可以回显输出的指令
- 如:echo “hello world!!!” 输入hello world!!!
declare 命令:
- declare 是 bash 的一个内建命令,可以用来声明 shell 变量、设置变量的属性
- declare 也可以写作 typeset
- declare -i s 代表强制把 s 变量当做 int 型参数运算
shell 三种运行方式:

- ./ 和 bash 执行过程基本一致,bash 是明确指定 bash 解释器去执行脚本,如果脚本中 #! 指定了解释器,则不起作用,./ 是使用 #! 指定的 shell
- 用 ./ 和 bash 去执行会在后台启动一个新的 shell 去执行脚本
- 用 . 去执行脚本不会启动新的 shell,直接由当前 shell 去解释执行脚本
shell 变量:
定义变量:
- 变量直接使用即可,但是 = 两边不能有空格
- 如:a=10
- 解释:不需要加 ; ,也不用加数据类型,现在就表示的是变量 a 等于 10
- 注意:变量值等于 10 ,是字符串的 10,shell脚本所有变量默认是字符串
引用变量 $ :
1
2a=10
echo $a #会输出10‘’ 和 “” :
‘’ :就是字符串
“” :带格式转换的字符串

unset 清除变量:
1
2
3
4
5
6a="abcde"
echo $a #输出abcde
unset a
echo $a #输出空白
a=66
echo $a #输出66read 获取变量:
类似于 c 语言的 scanf 函数, read 是一个阻塞型的 shell 命令
1
2
3
4a="abcde"
echo $a #输出abcde
read a #程序停在着 等待键盘输入值 如输入10
echo $a #输出10
readonly 只读变量:
类似于 c 语言的关键字 const
1
2
3
4a="abcde"
echo $a #输出abcde
readonly a #变量a 变为只读变量
a=10 #报错 不能修改
env 环境变量与指令:
- 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
- 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息
- 使用 env 指令可以查看当前系统拥有的环境变量
- 环境变量任意一个进程都可以使用(引用变量即可)
export、source 导出环境变量:
- export 用于将 Shell 变量导出为环境变量,使得该变量在当前 Shell 及其子进程 中可见
- export 语法:
- 它是在 shell 脚本里面使用的
- 如:export a=10
- source 用于 在当前 Shell 环境中执行脚本
- 如果需要定义的环境变量在系统生效,必须使用 source 运行脚本文件: source ./xxx.sh
- 生效时间:立即生效,但仅对当前终端会话有效
预设变量:
- 用途 1:执行 shell 脚本时传入的参数
- 用途 2:后期 shell 函数传参与返回值


Shell 语句和算术运算语法:
测试语句:
test 语句:
- 测试语句关键字 test
- 格式:test 测试条件
- 测试语句运算符 [](条件两边加上空格)等同于test
- 如:[(空格)测试条件(空格)]
文件测试:
可以测试文件的状态、文件是否存在、文件是否有数据、文件的类型、文件的权限

1
2
3
4
5!/bin/bash
echo $1 #执行shell脚本传递的参数
test -e $1 #匹对文件是否存在
echo $? #输出结果 0为真,1为假
预设变量 $? 的返回值问题:

字符串测试:
可以判断两个字符串是否相等、单个字符串是否为空

1
2
3
4
5!/bin/bash
read a
[ $a=1234 ]
echo $?
数字测试:

1
2
3
4
5!/bin/bash
read a
[ $a -eq 12 ]
echo $?
复合测试:

1
2
3
4
5!/bin/bash
read a
[ $a -ge 10 -a $a -le 20 ]
echo $?
- -a、-o在测试中是过时的用法,某些 shell 可能不支持,推荐改用 &&([[]]) 、||
- 如:[[ $val -ge 10 && $val -le 20 ]]
算术运算语法(()):
在 Shell 脚本中, (()) 是 Bash 和 Zsh 等现代 Shell 提供的算术运算语法,用于执行整数数学计算和算术条件判断。它的作用类似于 let 命令,但更简洁直观
支持 + - * / % ** ++ –(加、减、乘、除、取模、幂运算、自增、自减、比较运算符)
无需在变量前加 $(直接写变量名即可)

控制语句:
if 语句:
使用格式: if then elif else fi
注意: if elif 与测试语句[]中间必须有一个空格
if 语句的结束为 fi
1
2
3
4
5
6
7
8if [ 条件 1 ]; then
执行第一段程序
elif [ 条件 2 ]; then
执行第二段程序
……
else
执行其他可能程序
fi注意:if 里面也可以继续嵌套 if 语句,但是要遵循固定格式
case 语句:
1
2
3
4
5
6
7
8
9
10
11
12
13
14case $变量名称 in
“第一个变量内容” )
程序段一
;;
“第二个变量内容” )
程序段二
;;
*)
其它程序段
esacfor 语句:
1
2
3
4
5
6for (( 初始值; 限制值; 执行步阶 ))
do
程序段
done- 初始值:变量在循环中的起始值
- 限制值:当变量值在这个限制范围内时,就继续进行循环
- 执行步阶:每作一次循环时,变量的变化量
while 语句:
当判断条件成立的时候进入 while 循环,直到判断条件不成立时才退出循环
1
2
3
4
5
6while [ 判断条件 ]
do
程序段
done
until 语句:
与 while 恰恰相反,当 condition 成立的时候退出循环,否则继续循环
1
2
3
4
5
6until [ condition ]
do
程序段
done
break 与 continue 语句:
- 和 C 语言用法一样
- break 命令允许跳出循环,通常在进行一些处理后退出循环或 case 语句
- continue 命令类似于 break 命令,它不会跳出整个循环,只是跳过当前这一次循环
Shell 函数:
- shell 允许将一组命令集或语句形成一个可用块,这些块称为 shell 函数
1 | function 函数名() { |
- 所有函数在使用前必须定义,必须将函数放在脚本开始部分,直至 shell 解释器首次发现它时,才可以使用
- 函数调用格式:函数名 参数(函数名后面跟着要传入的参数)
- 函数的返回值:
- 函数也可以使用 return 提前结束并带回返回值
- return 从函数中返回,用最后状态命令决定返回值
- 在函数调用完成后,使用 $? 接收返回值