小编use*_*781的帖子

zsh 随机生成器中的奇怪行为

我有这个脚本从定义的字符列表中生成 $1 位的混合随机字符作为数组。

#!/bin/bash

charlist1=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
charlist2=(0 1 2 3 4 5 6 7 8 9)
charlists=(${charlist1[*]} ${charlist2[*]})

i="1"
while [ $i -le $1 ]; do
    out=$out`echo -n ${charlists[$(($RANDOM % ${#charlists[*]}))]}`
    i=$(( i + 1 ))
done

echo $out
Run Code Online (Sandbox Code Playgroud)

它在 bash 中运行良好,但是如果我用 zsh 调用它,zsh that_script_above.sh 6它只会生成 6 位相同字符的数字,如下所示:

>>> zsh that_script_above.sh 6
llllll
>>> …
Run Code Online (Sandbox Code Playgroud)

zsh random command-substitution subshell

1
推荐指数
1
解决办法
654
查看次数

标签 统计

command-substitution ×1

random ×1

subshell ×1

zsh ×1