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