回圈在 git action 中不能正常作業。
我的 task.sh 看起來像這樣:
#!/bin/bash
range=100
number=$((RANDOM % range))
while [ "$i" -le "$number" ]; do
echo "DATE: $1" >> date.txt
done
上面代碼的結果是:
./task.sh: 6: [: Illegal number:
下面的代碼作業正常。
echo "DATE: $1" >> date.txt
我嘗試了以下操作,但它也給出了錯誤。
#!/bin/bash
range=500
number=$((RANDOM % range))
for ((run=1; run <= number; run )); do
echo 'hello'
done
我很好奇你如何使下面的命令正常作業。
while (random(1-100)); do
echo 'hello'
done
此致!
uj5u.com熱心網友回復:
它應該可以正常作業:
while [[ "$i" -le "$number" ]]; do
^^ ^^
這需要 bash,但由于您的shebang是#!/bin/bash,您的t.sh腳本將使用 bash 運行,無論其.sh擴展名為' ' 。
但以目前的形式,這將是一個無限回圈。
你需要添加
i=$((i 1))
這將增加$i變數,使其"$i" -le "$number"正常作業。
初始化i為 0 更好/更干凈,但是[[ "" -le "$number" ]](在第一個回圈中,仍然“有效”(因為空字串被認為“低于或等于”非空“ $number”字串,并保留在回圈中)
話雖如此,該腳本更正確的形式/用法是:
#!/bin/bash
range=100
number=$((RANDOM % range))
i=0
while (( (i) <= (number) )); do
echo "DATE: ${i}" >> date.txt
i=$((i 1))
done
uj5u.com熱心網友回復:
您有兩個不同的問題:
- 你正在運行你的腳本
sh,而不是bash - 你沒有分配
i
對于第一個,請參閱為什么我的 Bash 代碼在使用“sh”運行時會失敗?
第二,i=0在嘗試將其$i作為數字進行比較之前,先在腳本中進行設定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/351560.html
上一篇:在bash中將命令作為引數傳遞
