Linux 之 shell 编程
Linux 之 shell 编程学习笔记(并不完全正确,有误请指正)
概念性知识点
脚本概念
脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的 可执行文件
运行脚本要求
脚本须有 可执行 权限,即 x 权限
内容格式:以
#!/bin/bash开头
脚本的执行方式
法一(需可执行权限)
赋予脚本可执行权限:
chmod u+x [脚本]在 有可执行权限 的前提下,使用
./[脚本]或 直接输入脚本的绝对路径[绝对路径]即可运行脚本
法二(无需可执行权限)
直接使用
sh [脚本]命令运行脚本
shell 编程知识点
shell 的变量
Linux shell 的变量分为 系统变量 和 用户变量
常见系统变量:\$HOME 、\$PWD 、\$PATH 、\$USER 、$SHELL 等
常用命令
set 查看当前shell中所有变量 unset [变量] 撤销变量 echo $[变量] 查询变量的值
基本规则
与其他语言规则大同小异
注意:等号两侧 不能有空格
变量名一般习惯为大写(约定俗成)
基本语法
1. 定义变量:
[变量名]=[值](中间不能有空格)2. 撤销变量:
unset [变量]3. 定义静态变量:
readonly [变量名]=[值](静态变量不能被撤销,即不能被 unset )4. 将命令的结果赋给变量:[变量名]=`[命令]` 或
[变量名]=$([命令])(第一种写法中 ` 号为 tab 键上面的键5. 输出变量时带上 $ 符号,即
echo $[变量]
位置参数变量

例如:

传参,输出:

预定义变量

例如:

注意:第二行 & 符号表示 以后台方式运行
输出:

shell 的多行注释
格式
:<<![内容]!
shell 的运算符
shell 运算的三种方法
法一(不好用)
[变量]=$(([表达式]))

法二(好用)
[变量]=$[[表达式]]

法三(难用)
[变量]=`expr[简单表达式]`
!!!注意:` 号为反引号
数字与符号 间有空格
* 号前必须带转义字符 \

shell 的条件判断
判断语句
[ condition ]// 非空 返回 true ,空 返回 false可用
echo $?查询上一条判断是否执行成功( 0 为 true ,>1 为 false )注意:condition 前后有 空格
三元运算符
[ condition ] && [语句1] || [语句2]若 condition 满足,则执行语句1
两个整数之间比较
= 字符串比较
-lt 小于(less than)
-le 小于等于(less equal)
-eq 等于(equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)
-ne 不等于(Not equal)
按照文件权限进行判断
-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)
按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence)
-d 文件存在并是一个目录(directory)
shell 的流程控制
if条件判断
!!!注意:condition 前后必须有 空格,即使没有 condition 也要有空格
基本语法
单分支
#单分支
if [ condition ]
then
[符合该条件执行的语句]
fi
例如:

多分支
#多分支
if [ condition ]
then
[符合该条件执行的语句]
elif [ condition ]
then
[符合该条件执行的语句]
else
[符合该条件执行的语句]
fi
例如:

case选择语句
基本语法
case $1 in
"[条件]")
[符合该条件执行的语句]
;; // ;; 符号代表 结束
"[条件]")
[符合该条件执行的语句]
*) //如果没有符合上面条件的值,则执行这段代码
[符合该条件执行的语句]
esac
例如:

输出:

for 循环
基本语法1
for [变量] in [值]
do
[代码块]
done
例如:

基本语法2
for (([初始值];[循环控制条件];[变量的变化]))
do
[代码块]
done
例如:

while 循环
基本语法
while [ 条件 ] //注意 条件 前后有空格
do
[代码块]
done
例如:

read 读取控制台的输入
基本语法
read -p "[提示语]" 指定输入时的提示语 read -t [秒] 指定输入的等待时间
例如:

shell 的函数
系统函数
basename 基本语法
basename [文件路径] 获取文件名 basename [文件路径] [后缀] 获取文件名(不带后缀)
例如:

dirname 基本语法
dirname [文件绝对路径] 获取文件的路径
例如:

自定义函数
基本语法
function [函数名]{
[代码块]
}
例如:

函数调用
[函数名] [参数]
例如:

Linux 之 shell 编程的更多相关文章
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- Linux下Shell编程
Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户 ...
- 【Hadoop离线基础总结】linux的shell编程
linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...
- linux中shell编程
shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚 ...
- linux下shell编程示例-获取进程id
今天初步学习了一下linux下的shell编程,简单记录一下测试用例 1.编辑shell脚本文件如下: #!/bin/bashecho "hello bash linux"echo ...
- linux之shell编程基本语法
Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell.Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linux的s ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- 3. Linux的shell编程
Shell 是一个用 C 语言编写的程序, 通过 Shell 用户可以访问操作系统内核服务.它类似于 DOS 下的 command 和后来的 cmd.exe.Shell 既是一种命令语言,又是一种程序 ...
- Linux之shell编程的基本使用
1.Shell shell是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的系统级程序 2.shell编程打印hello world 2.1 代码部分 #!/bin/ba ...
- Linux学习——shell编程之正则表达式和字符处理命令
shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...
随机推荐
- 2020-12-13:用最少数量的线程,每个线程执行for的空循环,把cpu打满了。如果在for的空循环里添加打印输出函数,会把cpu打满吗?为什么?
福哥答案2020-12-13:不会.输出会进行io操作,相对于CPU的速度,这是一个非常缓慢的过程,所以CPU会有机会空闲下来.***[评论](https://user.qzone.qq.com/31 ...
- 2021-06-20:已知一个消息流会不断地吐出整数 1~N,但不一定按照顺序依次吐出。如果上次打印的序号为i, 那么当i+1出现时,请打印 i+1 及其之后接收过的并且连续的所有数,直到1~N全部接
2021-06-20:已知一个消息流会不断地吐出整数 1~N,但不一定按照顺序依次吐出.如果上次打印的序号为i, 那么当i+1出现时,请打印 i+1 及其之后接收过的并且连续的所有数,直到1~N全部接 ...
- 2021-11-22:给定一个正数数组arr,表示每个小朋友的得分; 任何两个相邻的小朋友,如果得分一样,怎么分糖果无所谓,但如果得分不一样,分数大的一定要比分数少的多拿一些糖果; 假设所有的小朋友坐
2021-11-22:给定一个正数数组arr,表示每个小朋友的得分: 任何两个相邻的小朋友,如果得分一样,怎么分糖果无所谓,但如果得分不一样,分数大的一定要比分数少的多拿一些糖果: 假设所有的小朋友坐 ...
- 2021-10-30:有效的字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位
2021-10-30:有效的字母异位词.给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词.注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位 ...
- API架构的选择,RESTful、GraphQL还是gRPC
hi,我是熵减,见字如面. 在现代的软件工程中,微服务或在客户端与服务端之间的信息传递的方式,比较常见的有三种架构设计的风格:RESTful.GraphQL和gRPC. 每一种模式,都有其特点和合适的 ...
- C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理与用法详解
一.基础知识 a.1字节=8位(1Byte=8bit) 二进制表示:11111111 十进制表示:255 计算机内部约定用多少字节来规范数值,比如红绿蓝三色在计算机中只分配了一个字节,一个字节 ...
- adb知识
一.原理: adb客户端:能够对adb服务下发指令或命令的工具 server服务端:adb.exe执行之后的进程,表示adb的服务端,通过服务端与手机上的adb守护进程进行通信 adb守护进程 : 随 ...
- 文心一言 VS 讯飞星火 VS chatgpt (28)-- 算法导论5.1 3题
三.假设你希望以1/2的概率输出0与 1.你可以自由使用一个输出0或1的过程 BIASED-RANDOM.它以某概率 p 输出1,概率 1-p 输出0,其中 0<p<1 ,但是 p 的值未 ...
- ARC144
ARC 144 比赛情况:一眼订正,鉴定为做起 \(3\) 道题. A - Digit Sum of 2x \(2x\) 进位就不满足 \(M\) 最大的条件了,所以 \(x\) 不能进位. 然后要求 ...
- Hugging News #0616: 有几项非常重要的合作快来围观、最新中文演讲视频回放发布!
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...