将整数作为字符串添加到变量bash中

Mat*_*t R 8 string bash int

我想通过向变量添加随机整数来输出字符串以创建字符串.然而,Bash只是将数字加在一起.

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

假设每个随机数为1,脚本将输出3而不是111.如何获得所需的111结果?

Lek*_*eyn 21

有几种可能性来实现您期望的行为.让我们先来看看你做了些什么:

let b+=$number
Run Code Online (Sandbox Code Playgroud)

跑步help let:

let: let ARGUMENT...
    Evaluate arithmetic expressions.
Run Code Online (Sandbox Code Playgroud)

这就解释了为什么let b+=$number执行整数加法(1,2,3的)$number,以b代替字符串连接.

只需删除let和所需的行为1,11,111会发生.

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

b="$b$number"
Run Code Online (Sandbox Code Playgroud)

是的,只是"让我们b成为连接b和结果的结果number.

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