我想通过向变量添加随机整数来输出字符串以创建字符串。然而,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的理想结果?
答案 0 :(得分:20)
有多种可能性来实现您想要的行为。我们先来看看你做了什么:
let b+=$number
正在运行help let
:
let: let ARGUMENT...
Evaluate arithmetic expressions.
这解释了为什么let b+=$number
执行1
到2
的整数加法(3
,$number
,b
)而不是字符串连接
只需删除let
,即可显示所需的行为1
,11
,111
。
执行字符串连接的另一种方法:
b="$b$number"
是的,只需“让b
成为连接b
和number
的结果。
作为旁注,b=""
相当于b=
,因为""
已扩展为空字符串。对变量的模块操作可以通过算术扩展来完成:number=$((RANDOM%9))
。