一、shell
1.Shell概念
shell是一个特殊的应用程序,介于操作系统和用户之间,扮演的是命令解释器的角色,用户输入操作指令,shell解释,传递给内核,内核执行完从shell返回,给用户一个执行结果
2.Linux中有哪些shell
/etc/shells 里面就是linux所包含的shell
sh:UNIX最初使用的shell,已经被bash替换
bash:鸡肫于GNU的框架下发展出的shell,是sh的扩展
csh:语法有点类似于c语言的Shell。
tcsh:整合了csh,提供更多的功能。
nologin:奇怪的shell,这个shell可以让用户无法登录主机。
bash(/bin/bash)是目前大多数linux版本采用的默认shell
3.shell脚本的作用
1.自动化运维
2.批量化重复操作可以编写脚本结合计划任务自动周期运行
3.减轻管理员工作量
4.提高处理文本文件的速度
5.避免配置出错
二、Shell脚本的执行
1.方法一:指定路径的命令,要求文件必须有x权限。
chmod+x /opt/first.sh
指定绝对路径:/opt/first.sh
指定相对路径:./first.sh
2.方法二:指定shell来解释脚本,不需要文件必须有x权限
- sh firsh.sh
- bash first.sh
- source first.sh
1和2 的本质是运行脚本
3的本质是执行脚本
三、管道操作 |
将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
ps aux | wc -l
echo “abc123” | passwd --stdin zhangsan
四、重定向
1.交互式硬件设备
2.重定向操作
五、变量
1.变量的作用
用来存放系统和用户需要使用的特定参数(值)
2.变量名
使用固定的名称,由系统预设或用户定义
1、不要使用系统的命令作为变量名
2、不要使用中文
3、不能特殊符号开头 可以用_来开头
4、在指定变量名的时候有一个默认的规则:计算机:computer 学生:student a= b=
5、要有注释,还要注意前后一致
3.变量值
整数 int
字符串 string
布尔:真 假 0 1
浮点:1.1 2.2
4.自定义变量
由用户自己定义、修改和使用
定义新的变量
格式:变量名=变量值
变量命名规则:以字母或下划线开头,区分大小写
product=benet
version=6.0
name=“zhang san”
查看变量的值
格式:echo $变量名
${}是一种特殊的语法形式,用于获取变量的值或者对变量进行操作。
${}语法可以应用于任何变量名称,其中变量名称放在花括号中,例如${product},其中VAR是变量名。
5.只读变量readonly
只读变量不可以重新赋值,不可以被删除,只能重启失效
6.强引用和弱引用
"$name " 弱引用,其中的变量引用会被替换为变量值
'
n
a
m
e
′
强引用,其中的变量引用不会被替换为变量值,而保持原字符串
!
[
在这里插入图片描述
]
(
h
t
t
p
s
:
/
/
i
m
g
−
b
l
o
g
.
c
s
d
n
i
m
g
.
c
n
/
8
c
19
d
031
a
64
b
45118
e
8
b
46
f
3
d
f
754
f
9
f
.
p
n
g
)
反撇号:命令替换,提取命令执行后的输出结果,
‘
…
‘
和
name ' 强引用,其中的变量引用不会被替换为变量值,而保持原字符串 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8c19d031a64b45118e8b46f3df754f9f.png) 反撇号:命令替换,提取命令执行后的输出结果,`…`和
name′强引用,其中的变量引用不会被替换为变量值,而保持原字符串![在这里插入图片描述](https://img−blog.csdnimg.cn/8c19d031a64b45118e8b46f3df754f9f.png)反撇号:命令替换,提取命令执行后的输出结果,‘…‘和(…)作用相同
六.read命令获取输入内容
p prompt:指定提示符,用于提示用户输入数据。
-a array:将输入数据存储到一个数组中。
1.方法一:
read -p “提示信息” 变量名
echo $变量名
2.方法二:
echo -n “提示信息”
read 变量名
echo $变量名
read -a
数组输入
七、变量作用范围
全局变量
默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。
当进入子程序或新的子Shell环境时,局部变量将无法再使用。
可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
格式1:export 变量名
格式2:export 变量名=变量
值
缺点:潜在的副作用: 全局变量的使用可能导致副作用和潜在的复杂性。
因为全局变量是可访问的,所以它们可以被任何函数修改,
这可能导致程序状态的不确定性和难以调试的问题。
八、整数变量的运算
格式:expr 变量1 运算符 变量2 [运算符 变量3]
运算符:+ 加法、- 减法、* 乘法、/ 除法、% 取余
expr 12 * 5
常用的运算表达式:
i=KaTeX parse error: Undefined control sequence: \* at position 10: (expr 12 \̲*̲ 5) i=((125))
i=$[125] #这种用法已弃用
let i=12*5
i++ 相当于 i=
(
(
((
((i+1)) for i=1 i<=10 i++ i=10 i=9 i=9 i=8 i=7 i=6
i-- 相当于 i=
(
(
((
((i-1)) i=10 10-1=9 i=9 9-1=8 i=8
i+=2 相当于 i=
(
(
((
((i+2))
i++ 是先赋值再加1 i=1+1
++i 是加后再赋值1 1+1=2 2+1=3
bc是一个简单易用的计算器程序,可以用于执行基本的数学运算,
包括加、减、乘、除和取余等操作。
在Shell编程中,可以使用bc命令将数学表达式计算结果输出到标准输出或保存到文件中,以满足不同的需求。
echo 2*2 | bc
echo 2^4 | bc
非整数运算:
bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。
#!/bin/bash
#加
f=
(
e
c
h
o
"
4.3
+
2.5
"
∣
b
c
)
e
c
h
o
"
4.3
+
2.5
=
(echo "4.3+2.5"|bc) echo "4.3+2.5=
(echo"4.3+2.5"∣bc)echo"4.3+2.5=f"
九、环境变量
环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用于所有用户。
每个用户还有自己的独立配置文件(~/.bash_profile)。可以用来长期变更或设置某个环境变量。
env查看当前工作环境下所有环境变量
echo $PATH #查看当前搜索路径
PATH="$PATH:/root" #将/root目录添加到搜索路径
十、位置变量
位置变量(Positional Variables),也称为命令行参数(Command-Line Arguments),
是在运行脚本或程序时传递给它们的值。位置变量用于将外部数据传递给脚本或程序,
以便根据需要进行处理。 $1 $2
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确
十一、面试题:怎么样不删除文件,清空文件内容
cat /dev/null > passwd.txt
cat passwd.txt