如何在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行的需求。
修复步骤
- 修改GitHub Action中的脚本执行命令,指定用bash执行,匹配脚本头部的
#!/bin/bash声明:
将原有配置中的run: sh ./task.sh ${{ steps.date.outputs.date }}替换为run: bash ./task.sh ${{ steps.date.outputs.date }} - 调整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
相关产品推荐
相关产品推荐

