【发布时间】:2021-12-26 13:52:13
【问题描述】:
如何在git action的sh中正常随机运行for循环?
这里有一个每天提交的 github 存储库。
用于 github 操作
下面的yml文件存在。
name: planting-grass
on:
schedule:
- cron: '0 0 * * *'
jobs:
task:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Execute commands
run: sh ./task.sh ${{ steps.date.outputs.date }}
- name: Commit files
run: |
git config --global user.name "$(git --no-pager log --format=format:'%an' -n 1)"
git config --global user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
git add date.txt
git commit -m ${{ steps.date.outputs.date }}
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
这个 yml 运行 task.sh。 task.sh 看起来像这样:
#!/bin/bash
echo "DATE: $1" >> date.txt
一切正常。
但在data.txt中,每天累计一行。
我想在 data.txt 中累积 1 到 100 之间的行。
我可以在哪里编辑以使用上述功能?
然后我尝试了以下方法:
#!/bin/bash
range=100
number=$((RANDOM % range))
while [ "$i" -le "$number" ]; do
echo "DATE: $1" >> date.txt
done
#!/bin/bash
range=100
number=$((RANDOM % range))
i=0
while (( i <= number )); do
echo "DATE: ${i}" >> date.txt
i=$((i+1))
done
#!/bin/bash
range=100
number=$((RANDOM % range))
for i in $(seq 0 $number); do
echo "DATE: ${i}" >> date.txt
done
但都失败了。
它输出以下错误消息:
./task.sh: 7: [: Illegal number:
./task.sh: 7: [[: not found
./task.sh: 7: i: not found
我想知道如何运行正常的随机 for 循环。
最好的问候!
编辑)
#!/bin/bash
range=100
number=$((RANDOM % range))
i=0
while (( i <= number )); do
echo "DATE: ${i}" >> date.txt
i=$((i+1))
done
上面的代码运行良好,但它只运行一次。
与想在 1 到 100 之间随机运行 echo "DATE: ${i}" >> date.txt 不同,它总是只执行一次。我们该如何解决这个问题?
【问题讨论】:
-
最后一个应该有效。
[[: not found和i: not found-> 你不是在运行 bash,而是在运行 sh。sh ./task.sh。重击!= sh。[: Illegal number:变量i未在第一个代码 sn-p 中设置。 -
您可以将
run: sh ./task.sh更改为run: bash ./task.sh以使用 bash 运行您的脚本。您的 cron 计划 (0 0 * * *) 设置为每天运行。您可以将其更改为0,30 * * * *,每半小时运行一次(但日期将全天相同,除非您包括时间,例如date + '%Y-%m%d_%H:%M:%S')。我不确定你的目标是什么。 -
@dan 请回复答案,而不是评论用运行替换
run: sh ./task.sh:bash ./task.sh解决了它。非常感谢。
标签: bash sh github-actions