shell复习(1)

shell基础

1.第一个shell脚本
hello,world

#/bin/bash
echo "hello,world!"

执行
在这里插入图片描述
2.shell变量
2.1普通变量与临时变量

普通变量定义:VAR=value
临时环境变量定义:export VAR=value
变量引用:$VAR
下面看下他们之间区别:
Shell 进程的环境变量作用域是 Shell 进程,当 export 导入到系统变量时,则作用域是 Shell 进程
及其 Shell 子进程。

2.2位置变量
位置变量指的是函数或脚本后跟的第 n 个参数。
1 − 1- 1n,需要注意的是从第 10 个开始要用花括号调用,例如${10}
shift 可对位置变量控制,例如:

#/bin/bash
echo "1:$1"
shift
echo "2:$2"
shift
echo "3:$3"

在这里插入图片描述
每执行一次 shift 命令,位置变量个数就会减一,而变量值则提前一位。shift n,可设置向前移动
n 位。
2.3特殊变量
在这里插入图片描述
2.4变量引用

[root@node1 text]# var=123
[root@node1 text]# echo $var
123
[root@node1 text]# var+=456
[root@node1 text]# echo $var
123456
[root@node1 text]# echo $var_

[root@node1 text]# echo ${var}456
123456456
[root@node1 text]# var='echo 123'
[root@node1 text]# echo $var
echo 123
[root@node1 text]# var=(echo 123)
[root@node1 text]# echo $var
echo
[root@node1 text]# var=$(echo 123)
[root@node1 text]# echo $var
123
[root@node1 text]# 

2.5单双引号区别

[root@node1 text]# n=3
[root@node1 text]# var="1 2 $n"
[root@node1 text]# echo $var
1 2 3
[root@node1 text]# va='1 2 $n'
[root@node1 text]# echo $va
1 2 $n

2.6注释
Shell 注释也很简单,只要在每行前面加个#号,即表示 Shell 忽略解释。

shell字符串处理之${}

1.获取字符串长度

[root@node1 ~]# var='hello world!'
[root@node1 ~]# echo $var
hello world!
[root@node1 ~]# echo ${#var}
12
[root@node1 ~]# echo ${var}
hello world!

2.字符串切片
格式:
${parameter:offset}
${parameter:offset:length}
截取从 offset 个字符开始,向后 length 个字符。

1.截取hello字符串
[root@node1 ~]# var='hello world!'
[root@node1 ~]# echo ${var:0:5}
hello
2.截取wo字符
[root@node1 ~]# echo ${var:6:2}
wo
3.截取world!字符
[root@node1 ~]# echo ${var:5}
world!
4.截取最后一个字符
[root@node1 ~]# echo ${var:(-1)}
!
5.截取最后两个字符
[root@node1 ~]# echo ${var:(-2)}
d!
6.截取从倒数第 3 个字符后的 2 个字符
[root@node1 ~]# echo ${var:(-3):2}
ld

3.替换字符串
格式:${parameter/pattern/string}

[root@node1 ~]# var='hello world world!'
1.将第一个 world 字符串替换为 WORLD:
[root@node1 ~]# echo ${var/world/WORLD}
hello WORLD world!
2.将全部 world 字符串替换为 WORLD:
[root@node1 ~]# echo ${var//world/WORLD}
hello WORLD WORLD!
3.替换正则匹配为空:
[root@node1 ~]# var=123abc
[root@node1 ~]# echo ${var//[^0-9]/}##只匹配数字
123
[root@node1 ~]# echo ${var//[0-9]/}##只匹配字符
abc

4.字符串截取

格式:
${parameter#word} # 删除匹配前缀
${parameter##word}
${parameter%word} # 删除匹配后缀
${parameter%%word}
# 去掉左边,最短匹配模式,##最长匹配模式。
% 去掉右边,最短匹配模式,%%最长匹配模式。

举个例子看看

[root@node1 ~]# url="http://www.baidu.com/baike/user.html"
[root@node1 ~]# echo ${url#*//}
www.baidu.com/baike/user.html
[root@node1 ~]# echo ${url##*/}
user.html
[root@node1 ~]# echo ${url##*//}
www.baidu.com/baike/user.html
[root@node1 ~]# echo ${url%%//*}
http:
[root@node1 ~]# echo ${url%/*}
http://www.baidu.com/baike
[root@node1 ~]# 

5.变量状态赋值

${VAR:-string} 如果 VAR 变量为空则返回 string
${VAR:+string} 如果 VAR 变量不为空则返回 string
${VAR:=string} 如果 VAR 变量为空则重新赋值 VAR 变量值为 string
${VAR:?string} 如果 VAR 变量为空则将 string 输出到 stderr
如果变量为空就返回 hello world!# VAR=
# echo ${VAR:-'hello world!'}
hello world!
如果变量不为空就返回 hello world!# VAR="hello"
# echo ${VAR:+'hello world!'}
hello world!
如果变量为空就重新赋值:
# VAR=
# echo ${VAR:=hello}
hello
# echo $VAR
hello
如果变量为空就将信息输出 stderr:
# VAR=
# echo ${VAR:?value is null}
-bash: VAR: value is null
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值