2012-05-06 28 views
6

Dizeyi oluşturmak için bir değişkene rastgele tamsayı ekleyerek bir dize çıktı vermek istiyorum. Ancak Bash, sayıları birlikte ekler. Tamsayıları değişkenler için bir değişken olarak ekleyin.

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

komut dizisi 3 yerine 111. nasıl 111 istenilen sonucu elde yapacağım, her rastgele sayı 1'dir Say?

cevap

16

İstediğiniz davranışa ulaşmak için çeşitli olasılıklar vardır. İlk yaptığına inceleyelim:

let b+=$number 

help let Running: let b+=$number$number yerine dize birleştirme b arasında bir tamsayı eklenmesini (1, 2, 3) gerçekleştirir açıklıyor

let: let ARGUMENT... 
    Evaluate arithmetic expressions. 

.

let kaldırmak ve istediğiniz davranış 1, 11, 111 ortaya çıkıyor.

dize birleştirme gerçekleştirmek için başka bir yöntem:.

b="$b$number" 

Evet, sadece "bb ve number bitiştirmek sonucu haline gelmesine izin Bir yan not olarak

, b=""b="" olarak eşdeğerdir boş bir dizgeye genişletilir .. Bir değişken üzerindeki modül işlemi aritmetik genişleme ile yapılabilir: number=$((RANDOM%9)).

+1

+1 ayrıntılı bir açıklama için –

+0

Bunun gibi aritmetik genişletme yapabilirsiniz: ((sayı = RANDOM% 9)) ' –

İlgili konular