shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
时间:2022-05-04
本文章向大家介绍shell脚本中字符串的常见操作及"command not found"报错处理(附源码),主要内容包括简介、字符串的定义与赋值、字符串连接、if条件语句中的空格、shell中判断字符串包含关系的方法、总结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
简介
昨天在通过shell脚本实现一个功能的时候,由于对shell处理字符串的方法有些不熟悉导致花了不少时间也犯了很多错误,因此将昨日的一些错误记录下来,避免以后再犯。
字符串的定义与赋值
# 定义STR1变量,值为abc
STR1 = "abc"(错误写法)
STR1="abc"(正确写法)
在编写java代码时会考虑到格式化,往往变量定义时会有一些空格或者换行符等,因此在写shell脚本时也就顺手这么写了,在运行时就会报错:"command not found",将空格删除才正常运行。
源码如下:
#!/bin/bash
# file:testStr.sh
# author:13
# date:2017-07-21
STR1="abc"
echo $STR1
STR2 = "abc"
echo $STR2
对STR1定义是正确的,STR2则为错误方式,删除空格即可。
字符串连接
针对字符串的连接操作shell提供了相当简单的做法,直接将变量放到一起或用双引号即可。
#!/bin/bash
# file:testStr.sh
# author:13
# date:2017-07-21
STR1="abc"
STR2="abbcd abc ccc"
#连接STR1和STR2变量并赋值给STR3
STR3=$STR1$STR2
echo $STR3
#连接STR1与"abc" 并赋值给STR4
STR4=$STR1"abc"
echo $STR4
if条件语句中的空格
# 比较两个字符串是否相等中if语句的写法
STR1="abc"
STR2="abcd"
if[$STR1=$STR2](错误写法)
if [ $STR1 = $STR2 ](正确写法)
if语句中如果不添加空格的话,"if["会被识别为一个未知的命令,在运行时就会报错:"command not found",添加正确的空格才能运行。
源码如下:
#!/bin/bash
# file:testStr.sh
# author:13
# date:2017-07-21
STR1="abc"
STR2="abcd"
#if[$STR1=$STR2](错误写法)
if [ $STR1 = $STR2 ]
then
echo "相等"
else
echo "不相等"
fi
shell中判断字符串包含关系的方法
利用grep关键字查找
#!/bin/bash
# file:testStr.sh
# author:13
# date:2017-07-21
STR1="abc"
STR2="abbcd abc ccc"
result=$(echo $STR2 | grep "${STR1}")
echo $result
if [[ "$result" != "" ]]
then
echo "包含"
else
echo "不包含"
fi
利用字符串运算符(更简洁、推荐使用)
#!/bin/bash
# file:testStr.sh
# author:13
# date:2017-07-21
STR1="abc"
STR2="abbcd abc ccc"
if [[ $STR2 =~ $STR1 ]]
then
echo "包含"
else
echo "不包含"
fi
总结
在修复一个项目中的bug时所遇到的一些小问题,最终处理完成并且修复了bug差不多花了四五个小时的时间,也都一一记录了下来,提醒自己,同样的,也给其他碰到类似问题的朋友一些参考。
处理的问题是我在github上开源的一个项目,bug被人提出来总要解决掉的,GitHub地址点这里,开源中国地址点这里。
- Unikernel初体验
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- Scala学习教程笔记二之函数式编程、Object对象、伴生对象、继承、Trait、
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
- Kafka的生产者和消费者代码解析
- Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
- 作为完美主义者(强迫症)如何将linux的eth1网卡修改为eth0网卡
- 【入门篇】一个小白在Jetson TX2上安装caffe的踩坑之旅
- 【入门篇】Jetson TX2深度学习Inference初体验
- zeromq的安装,部署(号称最快的消息队列,消息中间件)
- OpenDaylight新建HelloWorld工程并集成版本
- 摸索出来的chrom调试前后台数据(Java&&Ajax)交互的方法分享一下咯!!!
- 机器学习:单词拼写纠正器python实现
- java.lang.Exception: 资源处理失败,失败原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在tinycolinux上组建子目录引导和混合32位64位的rootfs系统
- 微服务中的负载均衡简单实现
- 3分钟短文:素未谋面,Laravel数据库模型初阶入门
- 在tinycolinux上编译seafile
- Alink漫谈(二十一) :回归评估之源码分析
- Linux环境下通过GDB调试C项目实战
- Alink漫谈(二十二) :源码分析之聚类评估
- Python3.x将代码打包成exe程序并添加图标
- 在tinycolinux上编译pypy和hippyvm
- IDEA 热部署配置 HotSwapAgent-IntelliJ-IDEA-plugin
- 在tinycolinux上编译odoo8
- 在tinycolinux上编译jupyter和rootcling组建混合cpp,python学习环境
- 110分钟使用Python搭建自己的IP定位查询接口
- python实现在线微博数据可视化
- 在tinycolinux上安装chrome