# 第三章

# 变量

# 系统变量

echo $USER
echo $PWD
echo $HOME
1
2
3

# 自定义变量

  • 定义变量,a=1,b=2,echo $a+$b
  • unset,撤销
  • readonly只读变量,类似于java中的final,不可修改,不可撤回

# 特殊变量

变量 描述
$n n 为数字,$0表示该脚本名称,$1-$9表示1第一个到第九个参数,十以上的参数,用大括号${10}
$# 参数的个数
$* 表示命令行中所有的参数,把所有参数看成一个整体
$@ 表示命令行中所有的参数,把每个参数区分对待
$? 返回上一个命令的执行状态,若值为0,说明上一个命令正确执行

# 基本语法

# 运算符

#!/bin/bash
a=1
b=2
echo $a+$b
echo $[$a+$b]
echo $(($a+$b))
1
2
3
4
5
6

# 条件判断

语法 [ $a = $b ]

# 两个整数之间比较

符号 含义
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-qt 大于
-ge 大于等于
-ne 不等于

# 按照文件权限进行判断

符号 含义 例子
-r 有读的权限 脚本有没有读权限:[ -r a.sh ]
-w 有写的权限
-x 有执行的权限

# 按照文件类型进行判断

符号 含义 例子
-f 文件存在且是一个常规文件file 查看文件是否存在:[ -f a.sh ]
-e 文件存在,条件判断式
-d 文件存在且是一个目录dir

# 流程控制

# if判断

模版一:
if [ 条件判断式 ];then
	程序
fi

模版二:
if [ 条件判断式 ]
	then
		程序
elif [ 条件判断式 ]
	then
		程序
else
	程序
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# case语句

case $变量名 in
"v1")
	程序
;;
"v2")
	程序
;;
*)
	程序
;;
esac
1
2
3
4
5
6
7
8
9
10
11

# for循环

模版一:
for((i=0;i<=100;i++))
do
	程序
done

模版二:
for i in $@
do
  echo $i
done
1
2
3
4
5
6
7
8
9
10
11

# while循环

while [ 条件表达式 ]
do
	程序
done
1
2
3
4

# read读取控制台输入

#!/bin/bash
read i
echo $i
read -p "请输入:" p
echo $p
read -p "请在3s内输入:" -t 3 s
echo $s
1
2
3
4
5
6
7

# 函数

函数返回值的是状态码(函数执行结果)

#!/bin/bash
function func01(){
	echo abcd;
}
func01

function func01 {
	echo abcd;
}
func01

func01(){
	echo abcd;
}
func01

func01(){
	echo $[$1+$2];
}
func01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# Shell流处理工具

# cut

​ 剪,在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

# 基本用法

cut 选项参数 filename

说明:默认分隔符是制表符

# 选项参数

选项参数 功能
-f 列号,提取第几列
-d 分隔符,按照指定分隔符分割列
-c 指定具体的字符

# 案例实操

ifconfig | grep broadcast
ifconfig | grep broadcast | cut -d " " -f 2
ifconfig | grep broadcast | cut -d " " -f 2 | cut -c 1,2,3,4,5,6,7,8,9,10,11,12
1
2
3

# sed

​ 一种流编辑器。

# 基本用法

sed 选项参数 命令 filename

# 选项参数

选项参数 功能
-e 直接在指令列模式上进行sed的动作编辑
-i 直接编辑文件

# 命令功能

命令 功能描述
a 新增,a的后面可以接字符串,在下一行出现
d 删除
s 查找并替换

# 案例实操

# awk

# sort

选项 说明
-n 依照数值大小排序
-r 默认升序,指定则降序
-t 设置排序时所用的分隔字符
-k 指定需要排序的列
cat /etc/passwd | grep ^_a | sort -t : -k 3 -r 
1
更新时间: 9/21/2023, 7:24:27 PM