10

我想通过将随机整数添加到变量来创建字符串来输出字符串。然而,Bash 只是将数字相加。

#!/bin/bash
b=""
for ((x=1; x<=3; x++))
do
 number=$RANDOM
 let number%=9
 let b+=$number
done
echo ${b}

假设每个随机数都是 1,脚本会输出 3 而不是 111。如何实现 111 的预期结果?

4

1 回答 1

24

有几种可能性可以实现您想要的行为。让我们首先检查一下你做了什么:

let b+=$number

运行help let

let: let ARGUMENT...
    Evaluate arithmetic expressions.

这就解释了为什么let b+=$number执行 to 的整数加法 ( , 1, 2)3而不是字符串连接。$numberb

只需删除,就会发生let所需的行为1, 。11111

执行字符串连接的另一种方法:

b="$b$number"

是的,只是“让b成为连接band的结果number

作为旁注,b=""相当于b=as""被扩展为一个空字符串。对变量的模块操作可以通过算术扩展来完成:number=$((RANDOM%9)).

于 2012-05-06T21:07:09.667 回答