問題描述
在運行shell腳本時報錯,命令為:
sh test.sh
報錯如圖:
腳本代碼如下:
#!/bin/bash
# file:test.sh
# author:13
# date:2017-07-20
set -e
STR1="test string"
STR2="ter"
echo "STR1:"$STR1
echo "STR2:"$STR2
if [[ "$STR1" =~ "$STR2" ]];then
echo "包含"
else
echo "不包含"
fi
解決辦法
test.sh腳本功能就是判斷兩個字符串是否有包含關系,但是在運行至判斷表達式時報錯,sh命令無法識別"[[]]"表達式。
最終也找到了問題的解決辦法:bash與sh是有區別的,兩者是不同的命令,且bash是sh的增強版,而"[[]]"是bash腳本中的命令,因此在執行時,使用sh命令會報錯,將sh替換為bash命令即可:
bash test.sh
參考:https://stackoverflow.com/questions/12230690/string-comparison-in-bash-not-found