继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

shell脚本字符串常见操作及"command"报错

程序员十三
关注TA
已关注
手记 105
粉丝 4305
获赞 1591
原标题:shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
简介

昨天在通过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地址点这里,开源中国地址点这里

我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中虽不甘心,却又畏首畏尾。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP