首页 > 解决方案 > Github Actions 中的 Bash 脚本“[[: not found”

问题描述

我在 stackoverflow 上看到了一些关于 bash 脚本中的错误导致错误的帖子:

[[: not found

我已经尝试了一切来解决这个问题,但没有任何效果。

name: Node.js CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [10.x, 12.x, 14.x]

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1 
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: bash ./run test_ts_node
      shell: bash

我找到了shellyml 选项,但似乎没有帮助。

我的shebangs是#!/bin/bash

标签: bashgithubgithub-actions

解决方案


这是Ubuntudash上的默认设置/bin/sh,当您尝试使用[[bashism 时给出的消息。您的环境中有一些东西正在sh显式或隐式调用并期望它是bash.

在我的系统上,dash打印脚本的名称(或者sh如果它是一个sh -c调用),因此查看该输出并尝试确定问题的原因可能会有所帮助。您可能还想尝试运行您的 shell 脚本,-x看看您是否可以找出它调用的哪个命令导致了问题。日志应该向您显示导致问题的步骤,因此如果是npm ci,那么它将在 GitHub Actions 中显示为单独的步骤,您将能够更明确地确定原因。

另请注意,Git 调用/bin/sh,而不是/bin/bash,因此,如果您使用调用 shell 的 Git 命令编写任何脚本,那么您需要避免在该脚本中编写 bashisms。

您的问题出在哪里并不明显,因此如果没有更多信息,我们真的无法确定您的问题出在哪里。


推荐阅读