Windows系统使用wsl执行shell脚本报错解决

Windows系统使用wsl执行Shell脚本报错解决

Shell脚本的需求说明

判断字符串str1中是否包含字符串str2,使用=~操作符

代码编写

#!/bin/bash

str1="hello"
str2="llo"

if [[ $str1 =~ $str2 ]];then
        echo "$str1 contain $str2"
fi

脚本编写结束后命名为test.sh,然后通过命令运行脚本sh test.sh,此时报错了

test.sh: 6: [[: not found

问题分析

在运行 sh test.sh 时遇到了错误 test.sh: 6: [[: not found。

这个错误是由于脚本的第一行 #!/bin/bash 声明了它是一个 Bash 脚本,但你使用了 sh test.sh 来执行它。在某些系统中,sh 命令可能链接到 POSIX 兼容的 shell,而不是 Bash。

解决方案

解决这个问题的方法是使用 bash test.sh 命令来执行脚本,这样可以确保它在 Bash 环境中运行。请尝试使用以下命令来运行你的脚本:

bash test.sh

这样应该可以解决 [[: not found 的问题,并正确执行脚本。

另外,脚本中使用了 Bash 的扩展条件语句 [[ … ]] 来进行匹配判断。确保系统上安装了 Bash,以及 Bash 版本是否支持该语法。

最近更新

  1. TCP协议是安全的吗?

    2023-12-14 05:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-14 05:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-14 05:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-14 05:30:02       18 阅读

热门阅读

  1. 在ajax中如何使用jquery循环。

    2023-12-14 05:30:02       40 阅读
  2. Spring Security(一)架构概览

    2023-12-14 05:30:02       31 阅读
  3. ARM TZC-400原理及配置方式

    2023-12-14 05:30:02       35 阅读
  4. ARM按键中断

    2023-12-14 05:30:02       30 阅读
  5. 理解和应用 Golang 中的 TCP 网络编程

    2023-12-14 05:30:02       31 阅读
  6. 深入剖析 Django 与 FastAPI 的选择之谜

    2023-12-14 05:30:02       31 阅读