|
|
@@ -95,6 +95,38 @@ STANDALONE=(
|
|
|
"🔒 reviewing security config..."
|
|
|
)
|
|
|
|
|
|
+# 输出/日志/错误行(可重复,作为“裸输出”随机插入)
|
|
|
+OUTPUTS=(
|
|
|
+ "PASS"
|
|
|
+ "ok"
|
|
|
+ "HTTP 200"
|
|
|
+ "Active: active (running)"
|
|
|
+ "[GIN-debug] Listening and serving HTTP on :8081"
|
|
|
+ "warn: chunk size exceeds 4000 kB"
|
|
|
+ "ERROR: failed to open source \"file://internal/migrations\""
|
|
|
+ "FATAL: database connection refused, retrying..."
|
|
|
+ "0 error(s), 5 warning(s)"
|
|
|
+ "migrations completed successfully"
|
|
|
+ "no type errors found"
|
|
|
+ "✓ 307 modules transformed."
|
|
|
+ "Build succeeded after 3 retries"
|
|
|
+)
|
|
|
+
|
|
|
+# 动态随机数字行(消除固定值反复出现)
|
|
|
+gen_rand_lines() {
|
|
|
+ local n=$((1 + RANDOM % 3)) # 1-3 条
|
|
|
+ local i r
|
|
|
+ for ((i=0;i<n;i++)); do
|
|
|
+ r=$((RANDOM % 4))
|
|
|
+ case $r in
|
|
|
+ 0) echo "ok $(awk 'BEGIN{srand(); printf "%.3f", 0.05+rand()*1.5}')s" ;;
|
|
|
+ 1) echo "dist/assets/index-*.js $(awk 'BEGIN{srand(); printf "%.2f", 8+rand()*300}') kB │ gzip: $(awk 'BEGIN{srand(); printf "%.2f", 3+rand()*80}') kB" ;;
|
|
|
+ 2) echo "Progress: $((5+RANDOM%95))%..." ;;
|
|
|
+ 3) echo "$((1+RANDOM%40)) test(s), $((RANDOM%4)) failed" ;;
|
|
|
+ esac
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
# 返回 $1 个不重复随机下标(0..$2-1)
|
|
|
pick_unique() {
|
|
|
local count=$1 pool=$2
|
|
|
@@ -102,23 +134,31 @@ pick_unique() {
|
|
|
seq 0 $((pool-1)) | sort -R | head -n "$count"
|
|
|
}
|
|
|
|
|
|
-# 随机生成一段“工作日志”:命令对 + 独立行,洗牌打乱,尽量不重复
|
|
|
-# 同一次运行内命令对与独立行均不重复,避免“重复模式”
|
|
|
+# 随机生成一段“工作日志”:命令(约一半带输出)+独立行+裸输出+动态数字,洗牌打乱
|
|
|
+# 块大小不规则、数字随机化,消除固定模式与重复数字
|
|
|
gen_random_content() {
|
|
|
- local cmdc=$((2 + RANDOM % 3)) # 2-4 对命令
|
|
|
- local stc=$((3 + RANDOM % 4)) # 3-6 独立行
|
|
|
- local ci si i
|
|
|
+ local cmdc=$((1 + RANDOM % 5)) # 1-5 条命令
|
|
|
+ local stc=$((2 + RANDOM % 6)) # 2-7 条独立行
|
|
|
+ local ci si oi i
|
|
|
LINES=()
|
|
|
- # 命令对(不重复抽取),命令后紧跟其输出
|
|
|
+ # 命令:约一半紧跟输出(不一定成对,制造不规则块)
|
|
|
for ci in $(pick_unique "$cmdc" "${#COMMANDS[@]}"); do
|
|
|
LINES+=("\$ ${COMMANDS[$ci]}")
|
|
|
- LINES+=("${COMMAND_OUT[$ci]}")
|
|
|
+ if [ $((RANDOM % 2)) -eq 0 ]; then LINES+=("${COMMAND_OUT[$ci]}"); fi
|
|
|
+ [ $((RANDOM % 4)) -eq 0 ] && LINES+=("") # 随机空行
|
|
|
done
|
|
|
- # 独立行(不重复抽取)
|
|
|
+ # 独立行(不重复)
|
|
|
for si in $(pick_unique "$stc" "${#STANDALONE[@]}"); do
|
|
|
LINES+=("${STANDALONE[$si]}")
|
|
|
+ [ $((RANDOM % 3)) -eq 0 ] && LINES+=("") # 随机空行
|
|
|
+ done
|
|
|
+ # 裸输出行(可重复)
|
|
|
+ for ((i=0;i<$((2+RANDOM%4));i++)); do
|
|
|
+ LINES+=("${OUTPUTS[$((RANDOM % ${#OUTPUTS[@]}))]}")
|
|
|
done
|
|
|
- # 洗牌打乱整体顺序,避免命令总是集中在一处
|
|
|
+ # 动态随机数字行
|
|
|
+ while IFS= read -r l; do LINES+=("$l"); done < <(gen_rand_lines)
|
|
|
+ # 洗牌打乱整体顺序
|
|
|
local idx=($(seq 0 $((${#LINES[@]}-1)) | sort -R))
|
|
|
local shuffled=()
|
|
|
for i in "${idx[@]}"; do shuffled+=("${LINES[$i]}"); done
|