我怎样才能在 git 动作的 sh 中随机 运行 for 循环正常?
How can I randomly run for loop in sh of git action normally?
如何在 git 动作的 sh 中随机 运行 for 循环正常?
这里有一个 github 存储库,每天提交。
对于git集线器操作
下面的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 运行s task.sh。
task.sh 看起来像这样:
#!/bin/bash
echo "DATE: " >> date.txt
一切正常。
但是,在data.txt,每天一行累积。
我想在 data.txt 中累积 1 到 100 之间的行。
在哪里可以编辑使用以上功能?
然后我尝试了以下方法:
#!/bin/bash
range=100
number=$((RANDOM % range))
while [ "$i" -le "$number" ]; do
echo "DATE: " >> 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
上面的代码工作正常,但只工作一次。
不像想 运行 echo "DATE: ${i}" >> date.txt
在 1 到 100 之间随机,它总是只执行一次。我们如何解决这个问题?
您可以将 run: sh ./task.sh
更改为 run: bash ./task.sh
到 运行 您的脚本 bash,而不是 sh
。
如果您的脚本是可执行的(chmod a+x task.sh
,并提交文件),并且您有正确的 shebang (#!/bin/bash
),您也可以执行 run: ./task.sh
.
您的 cron 计划 (0 0 * * *
) 设置为 运行 每天。如果你想 运行 更频繁,你可以改变它。例如,0,30 * * * *
将每半小时 运行(日期将全天相同,除非您包括时间,例如 date + '%Y-%m%d_%H:%M:%S'
)。
如何在 git 动作的 sh 中随机 运行 for 循环正常?
这里有一个 github 存储库,每天提交。
对于git集线器操作
下面的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 运行s task.sh。 task.sh 看起来像这样:
#!/bin/bash
echo "DATE: " >> date.txt
一切正常。
但是,在data.txt,每天一行累积。
我想在 data.txt 中累积 1 到 100 之间的行。
在哪里可以编辑使用以上功能?
然后我尝试了以下方法:
#!/bin/bash
range=100
number=$((RANDOM % range))
while [ "$i" -le "$number" ]; do
echo "DATE: " >> 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
上面的代码工作正常,但只工作一次。
不像想 运行 echo "DATE: ${i}" >> date.txt
在 1 到 100 之间随机,它总是只执行一次。我们如何解决这个问题?
您可以将
run: sh ./task.sh
更改为run: bash ./task.sh
到 运行 您的脚本 bash,而不是sh
。如果您的脚本是可执行的(
chmod a+x task.sh
,并提交文件),并且您有正确的 shebang (#!/bin/bash
),您也可以执行run: ./task.sh
.您的 cron 计划 (
0 0 * * *
) 设置为 运行 每天。如果你想 运行 更频繁,你可以改变它。例如,0,30 * * * *
将每半小时 运行(日期将全天相同,除非您包括时间,例如date + '%Y-%m%d_%H:%M:%S'
)。