问题描述
在运行名为`test.sh`的shell脚本时,遇到了报错。该脚本的目的是判断两个字符串之间是否存在包含关系。执行命令为:
`sh test.sh`
报错情况如图像所示。
脚本内容如下:
```bash
!/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 使用正则表达式判断STR1是否包含STR2
echo "包含"
else
echo "不包含"
fi
```
解决办法
问题在于`test.sh`脚本中使用了bash的语法 `[[]]` 进行字符串比较,而普通的sh命令无法识别这种语法。bash是sh的增强版,提供了更多的功能和语法。当执行脚本时使用 `sh` 命令就会出现错误。
正确的解决办法是,将执行命令 `sh test.sh` 改为 `bash test.sh`。这样,bash就能正确解析脚本中的 `[[]]` 语法,从而顺利执行。
想起一段颇有深意的文字,它描述了人在生活中可能对自己灵魂的七种鄙视:在可进取时故作谦卑、用爱欲填充空虚、在困难面前选择容易、犯错后用别人的错误宽慰自己、将软弱视为生命的坚韧、鄙夷丑恶却未知自己也有同样的问题,以及在生活的污泥中既不甘心又畏首畏尾。我们在生活中是否也有过类似的体验呢?在面对选择时,我们是否也曾经对自己灵魂的某些方面感到鄙视?或许我们可以从中汲取力量,更加勇敢地面对生活的挑战。 |