2012-05-06 66 views
6

我想通过向变量添加随机整数来创建字符串来输出字符串。然而,Bash只是将数字加在一起。将整数作为字符串添加到变量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所期望的结果?

回答

16

有几种可能性来实现您想要的行为。让我们先来检验我们做了什么:

let b+=$number 

运行help let

let: let ARGUMENT... 
    Evaluate arithmetic expressions. 

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

简单地移除let并且期望的行为111,111将发生。

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

b="$b$number" 

是,简单地称为“让b成为串联bnumber的结果

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

+1

+1作为一个详细的解释 –

+0

你也可以这样算术扩展:'((number = RANDOM%9))' –

相关问题