昨天在经过shell脚本实现一个功能的时候,因为对shell处理字符串的方法有些不熟悉致使花了很多时间也犯了不少错误,所以将昨日的一些错误记录下来,避免之后再犯。java
# 定义STR1变量,值为abc STR1 = "abc"(错误写法) STR1="abc"(正确写法)
在编写java代码时会考虑到格式化,每每变量定义时会有一些空格或者换行符等,所以在写shell脚本时也就顺手这么写了,在运行时就会报错:"command not found",将空格删除才正常运行。git
源码以下:github
#!/bin/bash # file:testStr.sh # author:13 # date:2017-07-21 STR1="abc" echo $STR1 STR2 = "abc" echo $STR2
对STR1定义是正确的,STR2则为错误方式,删除空格便可。shell
针对字符串的链接操做shell提供了至关简单的作法,直接将变量放到一块儿或用双引号便可。bash
#!/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语句的写法 STR1="abc" STR2="abcd" if[$STR1=$STR2](错误写法) if [ $STR1 = $STR2 ](正确写法)
if语句中若是不添加空格的话,"if["会被识别为一个未知的命令,在运行时就会报错:"command not found",添加正确的空格才能运行。.net
源码以下:3d
#!/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
#!/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差很少花了四五个小时的时间,也都一一记录了下来,提醒本身,一样的,也给其余碰到相似问题的朋友一些参考。code
处理的问题是我在github上开源的一个项目,bug被人提出来总要解决掉的,GitHub地址点这里,开源中国地址点这里。blog