Shell脚本语法篇

Windows11家庭版开启虚拟化与WSL安装操作手册 Windows 11 家庭版完全支持 WSL 2,无需升级到专业版即可享受 Linux 开发环境。通过本手册介绍的步骤,您可以顺利安装和配置 WSL,并掌握系统更新后的维护技巧。WSL 为开发者提供了在 Windows 环境下使用 Linux 工具链的便利,尤其适合需要跨平台开发的场景。随着使用深入,您会发现 WSL 生态系统的强大之处,它不仅能提高开发效率,还能让 Windows 用户体验到 Linux 的强大功能。建议定期查看微软官方文档,了解 WSL 的最新功能和最佳实践。 阅读详情

命令行参数

位置参数可用 $1 $2 ${10} $n 进行读取
$* 和 $@ 代表所有位置参数
$0 代表脚本名称
$# 代表位置参数的数量

数组

# 定义数组
IPTS=( 192.168.1.100 192.168.1.101 192.168.1.102 )
# 显示数组所有元素
echo ${IPTS[@]}
# 显示数组元素个数
echo ${IPTS[@]}
# 显示数组的第一个元素
echo ${IPTS[0]}

运算符

# 基本运算符
+ - * / ** %
# 使用 expr 进行运算(只支持整数,运算符前后需要有空格)
expr 4 + 5
v_num1=`expr 4 = 5`
# 双圆括号是 let 命令的简化
(( a = 10 ))
(( a = 4+5))
(( a++ ))
echo $((10+20))

退出与退出状态

# exit
# exit 10 返回 10 给 shell,返回值不为 0 位不正常退出
# $? 判断当前的 shell 前一个进程是否正常退出

判断命令

# 判断文件是否存在
[ -f /etc/passwd ]
test -f /etc/passwd
# 判断文件是否可执行
[ -x 1.sh ]
# 判断是否为目录
[ -d /etc/ ]
# 判断目录是否存在
[ -e /etc/ ]
# 判断数字大小
[ 5 -gt 4 ] 或 [[ 5 > 4 ]]
[ 5 -ge 4 ] 或 [[ 5 >= 4 ]]
[ 5 -le 4 ] 或 [[ 5 <= 4 ]]
[ 5 -eq 4 ] 或 [[ 5 = 4 ]]
# 判断字符串是否相等(区分大小写)
[ "abc" = "abc" ]
[ "abc" != "abc" ]

if 判断语句

# 单判断条件,当前是否为 root 用户
if [ $UID = 0 ] 
then
	echo " root user "
fi
# 判断当前是否为 root 用户,如果不是则输出当前用户名
if [ $USER = root ]
then
	echo " root user "
else
	echo $USER
fi
# 多条件判断
if [ $USER = root ]; then
	echo " root user "
elif [ $USER = centos7 ]; then
	echo " centos7 user "
else
	echo " other user "
fi
# 嵌套 if 判断
if [ $USER = root ]; then
	echo " root user "
	if [ -x 1.sh ]; then
		. 1.sh
	fi
fi

case 语句

# 根据第一个参数进行判断
case "$1" in
	"start"|"START")
		echo "start server......"
	;;
	"stop"|"STOP")
		echo "stop server......"
	;;
	*)
		echo "Usage: $0 must be in {stop|start}"
	;;
esac

for 循环语句

# 遍历列表
for i in {1..9}
do
	echo $i
done
# 批量修改文件名
# 1.创建三个文件 1.t 2.t 3.t
touch 1.t 2.t 3.t
# 2. 将三个文件的扩展名修改为 txt
for filename in `ls *.t`
do
	mv $filename $(basename $filename .t).txt
done

while 循环语句

# 定义变量 a,初始值为 1
a=1
# 判断 a 的值是否小于 10
while [ $a -lt 10 ]; do
	(( a++ ));
	echo $a;
done

# 使用冒号(:)构建死循环
while : ; do
	echo always;
done 

# 结合位置参数,Shift 位置左移
while [ $# -ge 1 ]; do
	echo "do something"
	shift
done

break 控制语句

# 当 num 等于 5 时,跳出
for num in {1..9}
do
        if [ $num -eq 5 ]; then
                break;
        fi
        echo $num
done

continue 控制语句

# 当 num 等于 5 时,跳过本次循环
for num in {1..9}
do
        if [ $num -eq 5 ]; then
                continue;
        fi
        echo $num
done

批量插入

1. Ctrl + v 进入可视化块模式
2. 向下移动
3. Shift + i 进入插入模式
4. 输入要插入的字符
5. 点击两下 Esc

一次性计划任务

# 定义执行时间
at 时间
# 查询计划任务
atq

周期性计划任务(注意命令执行路径)

# 编辑计划任务
crontab -e
# 查看计划任务
crontab -l
# 配置格式
# 分钟 小时 日期 月份 星期 执行的命令
# 每分钟将日期追加到文件里
* * * * * /usr/bin/date >> /tmp/date.txt
# 每周1执行
* * * * 1 /usr/bin/date >> /tmp/date.txt
# 每周1或周5执行
* * * * 1,5 /usr/bin/date >> /tmp/date.txt
# 每周1至周5执行
* * * * 1-5 /usr/bin/date >> /tmp/date.txt
# 7月7日执行
* * 7 7 * /usr/bin/date >> /tmp/date.txt
# 7月7日18点15分执行
15 18 7 7 * /usr/bin/date >> /tmp/date.txt
# 7月7日18点15分,并且是周1至周5执行
15 18 7 7 1-5 /usr/bin/date >> /tmp/date.txt
# 周1凌晨3点30分执行
30 3 * * 1 /usr/bin/date >> /tmp/date.txt
# 每月15号凌晨3点整执行
0 3 15 * * /usr/bin/date >> /tmp/date.txt
# 查看任务计划日志
tail -f /var/log/cron
# 每个用户会有一个自己的周期性计划任务
ls /var/spool/cron/用户名
GameFramework框架详解之 Network网络框架 NetworkManager只负责维护NetworkChannel,实际的有种我们简历网络连接的也是NetworkChannel作为一个网路频道,这样管理起来比较方便,比如:一个游戏可能有多个网络连接,那么我们建立多个网络频道即可,或者当我们一个网络频道断线后,我们可以直接再新建一个,防止数据混乱。/// /// 网络管理器。/// /// 网络频道。/// 用户自定义网络错误事件。/// 检查是否存在网络频道。/// 获取网络频道。/// 获取所有网络频道。 阅读详情

相关推荐

在centos7部署k8s搭建kubernetes集群

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找

山东梅长苏 1万+

Shell脚本笔记(分支和循环)

退出与退出状态 退出程序命令 exit exit 10返回10给Shell,返回值非0为不正常退出 $?判断当前Shell前一个程序的返回值 测试命令 man test test命令用于检查文件或者比较值 test可以做以下测试 文件测试 整数比较测试 字符串测试 test测试语句可以简写为[]符号 []符号还有扩展写法[[]]支持&& || < ...

Clouds 398

modbus

从机地址 功能码 起始地址高位 起始地址低位 数量高位 数量低位 字节数 0001H高位 0001H低位 0002H高位 0002H低位 CRC高位 CRC低位。每个输入寄存器的长度为2个字节。其中,CDH对应线圈0013H到001AH的内容,01H对应线圈001B到001CH的内容,未使用位用0填充。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。

lunhuicnm的博客 9752

exit 1 和 exit 0 通常来说分别代表什么意思

exit 1 和 exit 0 通常来说分别代表什么意思

3662

显著性算法 + 伪彩变换

利用opencv得到显著图和伪彩图

正在挣扎中的人 2298

混合示教长短时记忆网络的车辆轨迹预测研究

论文"混合示教长短时记忆网络的车辆轨迹预测研究"中数据处理及MTF-LSTM模型实现代码,模型在Pytorch框架下实现。

ColinFhz的博客 1448

linux变量理解,变量的理解

$0显示脚本完事路径和文件名1.#echo $?(判断命令执行是成功0还是失败)2.#ping 172.20.0.1(测主机是否连通,unreachable目标主机不通) 默认不停的ping, 所以ping-c1,则表示只让它pinf 一次eg:#ping -c3 172.2o.0.1(只ping3次)3.#ping -c4 172.20.0.1 &> /dev/null#echo ...

weixin_42509793的博客 258

使用3d Slicer标注病灶并生成ROI掩膜

本篇博客给大家演示一下如何使用3d Slicer标注病灶并生成ROI掩膜,供深度学习模型训练使用。 关于3d Slicer和MRIcron的安装请看我的另一个帖子。 一、数据加载 你可以使用你手头的数据进行标注,这里为了示例方便,我是用的3d Slicer中给出的Sample Data中的MRBrainTumor1的数据。 二、病灶标注及保存 Modules选择Segment Editor: 然后点击Add按钮添加一个Segment,在下方便签上双击可以修改Segment的命名和颜色等。下方三个按钮

Su_Del的博客 1万+

exit 函数

exit 函数 头文件 使用 用在子程序中用来终结程序用的,使用后程序自动结束,跳回操作系统。 exit(0) 表示程序正常退出。 exit(1) / exit(-1) 表示程序异常退出。 exit() 结束当前进程/当前程序。 #define x ( 错误名 )  -1 exit(x);

hazard_10的博客 1578

【零基础入门哈希签名架构,从Lamport到SPHINCS+】第二集 哈希签名树 Merkle Tree Authentication

在第一集中,我们一直忽略了一个问题。设想一下,假如有一个Hacker(黑客),在截获到Sender发送给Receiver的公钥之后,把这个公钥改成Hacker自己的公钥,然后再发给Receiver,那么Receiver就会误认为这是Sender的公钥。所以我们之前所说放方案,其安全性都需要建立在一个前提下:Receiver需要确认公钥确实是Sender发出的。

m0_50572808的博客 2454

Qt6安装保姆级教程:从国内镜像下载到配置避坑指南(附清华/中科大源)

本文提供详细的Qt6安装与配置指南,重点介绍如何利用清华大学、中国科学技术大学等国内镜像源解决下载速度慢的问题。内容涵盖在线安装器获取、组件选择策略、环境变量配置以及常见编译与部署问题的排查方法,旨在帮助国内开发者高效、顺畅地完成Qt6开发环境搭建。

weixin_29281915的博客 634

Stack trace: ExitCodeException exitCode=10:

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33946605的博客 2124

Android oom_adj 更新原理(一)

通过之前的两篇博文《lmkd 机制详解》和《lmkd中adj score的算法剖析》中,根据计算出来的 min_score_adj 选择大于该值的 oom_adj 的进程进行 kill 处理。oom_adj 随着应用状态的不同其值也是伴随着变化的。本文将通过源码剖析 oom_adj 更新的原理。

私房菜 2655

shell脚本进阶—语法篇

ForeWordQuestion:如果把C语言的各种数据类型、指针、结构体、联合体等结构全都去掉,还剩下什么?…… 没错,还有条件判断、循环、一维数组(因为没有指针)以及部分函数。 而这些,正是shell语法结构中包含的所有内容。 所以我们可以看出,shell语法学习起来远比C语言容易得多。 那么本文就简单总结下shell语法的内容及其具体使用方法。 Key Points: 条件判断

My Coding Life 1781

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

shell脚本语法篇

条件测试: 1.条件测试test或[ 命令test或[测试一个条件是否成立,测试为真为0测试为假为1 [传递给各参数之间应该用空格隔开,命令test或[参数形式是相同的,只不过test不需要]参数,常见的命令如下: [ -d DIR ] : 如果DIR存在并且是一个目录则为真 [ -f FILE ] : 如果FILE存在且是一个普通文件则为真 [ -z STRING ] : 如果STR

xiaohudeITmeng的博客 498

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Shell脚本学习-语法篇(下)

Shell脚本学习-语法篇(下) 1.函数 在Shell当中,函数被理解为程序或小脚本,调用函数时可以传任意个参数列表,return返回值代表其退出码,被当做命令看待。 函数定义中没有返回值也没有参数列表。函数体的左花括号{和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号}写在同一行,命令末尾必须有;号。 函数的简单使用: 2.Shell脚本的调试方法

step_ma的博客 600

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Shell脚本学习-语法篇(上)

Shell脚本学习-语法篇(上) 一、条件测试 1.条件测试:test [ 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的退出状态为0,如果测试结果为假,则为1(与C语言的逻辑刚好相反)。 [是一个命令的名字,传给命令的各个参数之间应该用空格隔开。 测试命令: [ -d DIR ]:如果DIR存在并且是一个目录则为真 [ -f FILE ]:如果FILE存在且

step_ma的博客 2963

Linux--shell脚本之语法篇

>条件测试:test或 [ ]    需注意返回状态码如果为真则返回0,为假则返回1                   eg:        #!    /bin/bash                                        #!       /bin/bash                                val=10

Sherry_Wangnana的博客 653

【Linux】中的shell脚本语法篇之比较

【Linux】中的shell脚本语法篇之比较

LX18792732127的博客 626

shell脚本学习-语法篇

一.条件测试:test [命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测 试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。二。if/then/elif/else/fi和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制。这种流程控制语句本质上也...

weixin_34418883的博客 91

【Linux】中的shell脚本语法篇之函数和数组

【Linux】中的shell脚本语法篇之函数和数组

LX18792732127的博客 805

Shell脚本编程语法篇1

今天呢,我来将这两天学到的Shell语法做以总结。如有问题,欢迎提出! 1.if语句      我们先来看一个if语句的例子,代码以及结果如下: read val if [ $val -eq 100 ] then echo "hello" fi       其实shell的if语句和c语言的没有很大的区别,除了写法上有些差别,其他实现思想都是一样的。我们写的这段代码是先读入一个

lmh的博客 459

shell脚本---语法篇

1、条件测试1)test2)[测试命令:[ -d DIR ] : 如果DIR存在并且是一个目录则为真[ -f FILE ] : 如果FILE存在且是一个普通文件则为真[ -z STRING ] : 如果STRING的长度为零则为真[ -n STRING ] : 如果STRING的长度非零则为真[ STRING1 = STRING2 ] : 如果两个字符串相同则为真[ STRI...

weixin_33964094的博客 140

shell脚本--语法篇

条件测试1、条件测试test或[ ](测试条件是真是假)例如:字符串比较#!/bin/bashread datatest "$data" == "hello"//注意等号两边有空格 或者 [ $data == "hello" ]echo $? //上一条命令的运行结果,成功为0,失败为1例如:两数比较大小#!/bin/bashdata=200[ $data -eq 100...

weixin_34007020的博客 113

如何编写Shell脚本

什么是shell脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。shell script是一种解释型语言,必须由解释器来执行这些脚本,执行时,解释器将脚本一行一行地转换为代码。 这个解释器就是Shell,它是一个用 C 语言编写的程序。常见的Shell有Bourne Shell(/usr/bin/sh或/bin/sh)和Bourne Again Shell...

施勇 1万+

Shell和Shell脚本概念

Shell 是一个程序,它提供了一个用户界面,用户可以通过它来与操作系统交互。在计算机术语中,Shell 通常指的是命令行界面(CLI),它允许用户输入命令来控制计算机。Shell 可以是图形化的,也可以是文本命令行的。命令解释器:Shell 作为命令解释器,它接受用户输入的命令,并将其转换为操作系统可以理解的格式,然后执行这些命令。脚本语言:Shell 脚本是一种编程语言,它允许用户编写可以自动执行一系列命令的脚本。这些脚本可以用于自动化任务、系统管理等。环境变量。

sq2048935747@163.com的博客 2888
上一篇: stream实战记录
帅帅的猪头
博客等级 码龄10年 32粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅帅的猪头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值