zoukankan      html  css  js  c++  java
  • 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
    

    STR

    对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",添加正确的空格才能运行。

    if

    源码如下:

    #!/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地址点这里,开源中国地址点这里

  • 相关阅读:
    java中的Set的使用以及各种遍历方法(较为全面)
    系统图标
    监听按钮
    GUI
    【Avalon】获取隐藏元素的尺寸
    Hooks
    特性节点Attribute
    ngCloak
    邮件
    时间
  • 原文地址:https://www.cnblogs.com/han-1034683568/p/7217047.html
Copyright © 2011-2022 走看看