10

ランダムな整数を変数に追加して文字列を作成し、文字列を出力したいと考えています。ただし、Bash は数字を加算するだけです。

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

すべての乱数が 1 だとすると、スクリプトは 111 ではなく 3 を出力します。111 という望ましい結果を得るにはどうすればよいですか?

4

1 に答える 1

24

目的の動作を実現するには、いくつかの可能性があります。まず、これまでに行ったことを調べてみましょう。

let b+=$number

実行中help let:

let: let ARGUMENT...
    Evaluate arithmetic expressions.

これは、文字列連結の代わりにtolet b+=$numberの整数加算 ( 123) を実行する理由を説明しています。$numberb

削除するだけで、let目的の動作1、、が発生します。11111

文字列連結を実行する別の方法:

b="$b$number"

はい、単純に「bと を連結bした結果になるようにしましょうnumber

補足として、はasが空の文字列に展開されるのb=""と同じです。変数に対するモジュール演算は、算術展開で行うことができます: .b=""number=$((RANDOM%9))

于 2012-05-06T21:07:09.667 に答える