shell编程的基础知识笔记

您所在的位置:网站首页 shell编程判断文件是否存在数据类型 shell编程的基础知识笔记

shell编程的基础知识笔记

2023-05-18 16:13| 来源: 网络整理| 查看: 265

1 shell编程 1.1 shell脚本的作用 1.1.1 shell命令

用户主目录下创建一个文件夹 23041/day1 mkdir -p ~/23041/day1

进入到用户主目录下的23041/day1 cd ~/23041/day1

在day1目录下创建一个空文件 1.txt touch 1.txt

在这里插入图片描述

shell脚本后缀为 .sh

1.2 shell语法 1.2.1 与C语言比较

都属于计算机语言

C语言是编译性语言(编译器 gcc),强类型语言,数据类型比较多

shell语言是解释性语言,弱类型语言

在这里插入图片描述

1.2.2 shell开发过程

创建一个后缀名为 .sh 的文件 touch 1.sh

编辑 .sh 文件

在这里插入图片描述

#!/bin/bash 相当于C语言的头文件

修改文件权限

在这里插入图片描述

运行 .sh 文件

在这里插入图片描述

1.3 变量 1.3.1 用户自定义变量 1.3.1.1 变量名的命名规则

由数字,字母和下划线组成,首字母不能为数字

不能为关键字或保留字

尽量见名知意,尽量大写

1.3.1.2 变量名的语法规则

在这里插入图片描述

1.3.2 位置参数即命令行参数

位置参数由系统提供的参数

在这里插入图片描述

1.3.3 预定义变量

$# :包含命令行参数的个数

$@ :包含所有命令行参数

$* :包含所有命令行参数

$$:包含正在执行进程的ID号

$?:包含前一个命令的退出状态,正常退出是0(真),反之为非0值(假)

ps -ef 查看所有进程及其PID(进程号),系统时间,命令详细目录,执行者等

ps aux 除了可显示-ef所有内容之外,还可显示CPU及内存占用率,进程状态

1.3.4 环境变量

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

1.3.4 shell中的程序和语句 1.3.4.1 说明性语句 (注释)

#我是注释

1.3.4.2 功能性语句 1.3.4.2.1 键盘读入变量值read

在这里插入图片描述

1.3.4.2.2 算术运算命令 expr

expr主要用于简单的整数运算

在这里插入图片描述 在这里插入图片描述

1.3.4.3 test命令:字符串 整数 文件属性 1.3.4.3.1 字符串

s1 = s2 测试两个字符串的内容是否完全一样

s1 !=s2 测试两个字符串的内容是否有差异

-z s1 测试字符串的长度是否为0

-n s1 测试s1字符串的长度是否不为0

在这里插入图片描述

1.3.4.3.2 整数

a -eq b 测试a与b是否相等 (equal)

a -ne b 测试a与b是否不相等

a -gt b 测试a是否大于b (great)

a -ge b 测试a是否大于等于b

a -lt b 测试a是否小于b (little)

a -le b 测试a是否小于等于b

在这里插入图片描述

1.3.4.3.3 文件属性

7种文件:

普通文件 d 目录文件 l 链接文件 p 管道文件 s 套接字(socket)文件 c:字符设备文件 b:块设备文件

-d name 测试name是否为一个目录

-f name 测试name是否为普通文件

-L name 测试name是否为链接文件

-r name 测试name是否存在且可读

-w name 测试name是否存在且可写

-x name 测试name是否存在且为可执行

-s name 测试name文件是否存在且其长度不为0

f1 -nt f2 测试文件f1是否比文件f2更新

f1 -ot f2 测试文件s1是否比文件f2更旧

在这里插入图片描述

1.3.4.4 结构性语句 1.3.4.4.1 选择结构 1.3.4.4.1.1 单分支选择结构 if 表达式 then 命令表 fi

在这里插入图片描述

1.3.4.4.1.2 双分支选择结构 if 表达式 then 命令表1 else 命令表2 fi

在这里插入图片描述

1.3.4.4.1.3 多分支选择结构 if 表达式1 then 命令表1 elif 表达式2 then 命令表2 elif 表达式3 then 命令表3 ...... elif 表达式n then 命令表n else 命令表n+1 fi

在这里插入图片描述

case 字符串常量 in #测试字符串是否等于模式 模式1) 命令表1 ;; #类似于break 模式2) 命令表2 ;; 模式3) 命令表3 2.循环结构 1.for语句 1.带列表for语句 ;; ...... 模式n) 命令表n ;; *) #default 表示模式都不匹配 命令表n+1 ;; esac

在这里插入图片描述

1.3.4.4.2 循环结构 1.3.4.4.2.1 带列表 for语句 for 变量名 in 列表 do 命令表 done

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

1.3.4.4.2.2 不带列表for语句

1.3.4.4.2.3 类似于C语言的for语句

在这里插入图片描述

1.3.4.4.2.4 while语句 while 命令或表达式 do 命令表 done

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

1.4 函数 1.4.1 定义

方式一:

function_name() { }

方式二:

function function_name() { } #编写两个数求和的函数 function add() { #$1:你传进来第一个参数 #$2:你传进来第二个参数 SUM=`expr $1 + $2` #将传进来的参数进行算术运算求和 return $SUM #返回结果 } 1.4.2 函数的调用

方式一:

SUM=`functio_name 参数列表(空格隔开)` echo $SUM #调用add函数的时候 SUM=`add 23 45` echo $SUM

方式二:

function_name 参数列表(空格隔开) add 23 45 echo $? #$?表示上一个命令退出的状态

在这里插入图片描述

2 shell案例 2.1 案例1

请输入一个文件,判断它是否是普通文件,如果是普通文件,判断它是否有写的权限,

如果有写的权限,向文件中写入"hello world"

如果文件没有写的权限,给它添加写权限后,写入"hello world"

在这里插入图片描述

2.2 案例2

请输入想要下载的文件的名字,让用户确认下是否下载这个软件[Y/N/Q]。

Y(YES|Yes|yes|y|Y):正在下载软件,N:取消下载软件,Q退出

在这里插入图片描述

2.3 案例3

在这里插入图片描述

2.4 案例4

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3