shell腳本中字符串的常見操做及"command not found"報錯處理(附源碼)

簡介

昨天在經過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

STR

對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條件語句中的空格

# 比較兩個字符串是否相等中if語句的寫法

STR1="abc"
STR2="abcd"

if[$STR1=$STR2](錯誤寫法)

if [ $STR1 = $STR2 ](正確寫法)

if語句中若是不添加空格的話,"if["會被識別爲一個未知的命令,在運行時就會報錯:"command not found",添加正確的空格才能運行。.net

if

源碼以下: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

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差很少花了四五個小時的時間,也都一一記錄了下來,提醒本身,一樣的,也給其餘碰到相似問題的朋友一些參考。code

處理的問題是我在github上開源的一個項目,bug被人提出來總要解決掉的,GitHub地址點這裏,開源中國地址點這裏blog

相關文章
相關標籤/搜索