You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Action的sh脚本中正常运行随机次数的循环

问题核心原因
  • 执行环境不匹配:你的GitHub Action中使用sh ./task.sh执行脚本,Ubuntu系统默认的sh指向dash shell,它不支持bash专属特性,包括RANDOM内置变量、(( ))算术运算语法。这是报错、循环只执行1次的核心原因:dash中RANDOM为空值,$((RANDOM % 100))计算结果固定为0,循环只会执行1次。
  • 代码逻辑缺陷:最早的尝试版本没有初始化i变量,判断条件中出现空值,触发Illegal number报错。
  • 随机数范围错误:原有逻辑$((RANDOM%100))生成的是0-99的整数,不符合你要求的1-100行的需求。
修复步骤
  1. 修改GitHub Action中的脚本执行命令,指定用bash执行,匹配脚本头部的#!/bin/bash声明:
    将原有配置中的run: sh ./task.sh ${{ steps.date.outputs.date }}替换为run: bash ./task.sh ${{ steps.date.outputs.date }}
  2. 调整task.sh的随机数生成逻辑和循环逻辑,确保生成1-100的随机数,循环正常运行。
最终可用代码

调整后的GitHub Action对应步骤

- name: Execute commands
  run: bash ./task.sh ${{ steps.date.outputs.date }}

调整后的task.sh脚本

#!/bin/bash

# 生成1-100的随机整数
range=100
random_count=$((RANDOM % range + 1))

# 循环写入对应行数,$1为传入的日期参数
for ((i=1; i<=random_count; i++)); do
    echo "DATE: $1" >> date.txt
done

如果需要每行内容带上序号,可以将写入内容修改为echo "DATE: $1 第${i}条记录" >> date.txt,可根据需求自行调整格式。

内容的提问来源于stack exchange,提问作者emarwa.mouma.35t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:54:00