我似乎无法用变量定义应该使用哪个 shell。 我想减少代码,这就是为什么我想通过变量定义我使用的 shell。
如果我删除示例中的最后一个使用,并且只为变量创建
env
,或者它们在那里的 echo
。所以并不是变量没有设置。它们已设置。
我还没有在文档中看到类似的内容,但无法设置 bash 的变量是有道理的。
有谁知道如何使其更加动态吗?
jobs:
regular:
strategy:
matrix:
os: [ macos, ubuntu, windows]
fail-fast: false # Allows to see results from other combinations
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
......
- name: Set OS-specific variables for Windows
if: matrix.os == 'windows'
run: |
echo "OS_PATH=windows" >> $GITHUB_ENV
echo "OS_FILE_EXTENSION=ps" >> $GITHUB_ENV
echo "OS_SHELL=pwsh" >> $GITHUB_ENV
shell: bash
- name: Set OS-specific variables for macOS and Ubuntu
if: matrix.os != 'windows'
run: |
echo "OS_PATH=linux_mac" >> $GITHUB_ENV
echo "OS_FILE_EXTENSION=sh" >> $GITHUB_ENV
echo "OS_SHELL=bash" >> $GITHUB_ENV
shell: bash
- name: print out vars
id: printOutVars
shell: bash
run: env
- name: test echo
run: |
echo ${{ env.OS_PATH }}
echo ${{ env.OS_SHELL }}
echo ${{ env.OS_FILE_EXTENSION }}
shell: bash
- name: Download Issues with end limit
id: normalIssuesWithEndLimit
run: ./${{ env.OS_PATH }}/magpi-issue-downloader.${{ env.OS_FILE_EXTENSION }} -l 2
shell: ${{ env.OS_SHELL }}
看来,这是不可能的。 而且:它无论如何都会自动使用正确的 shell,linux 下使用 bash,windows 下使用 powershell。所以这对我来说就足够了。