ランダムな整数を変数に追加して文字列を作成し、文字列を出力したいと考えています。ただし、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 という望ましい結果を得るにはどうすればよいですか?
目的の動作を実現するには、いくつかの可能性があります。まず、これまでに行ったことを調べてみましょう。
let b+=$number
実行中help let:
let: let ARGUMENT...
Evaluate arithmetic expressions.
これは、文字列連結の代わりにtolet b+=$numberの整数加算 ( 1、2、3) を実行する理由を説明しています。$numberb
削除するだけで、let目的の動作1、、が発生します。11111
文字列連結を実行する別の方法:
b="$b$number"
はい、単純に「bと を連結bした結果になるようにしましょうnumber。
補足として、はasが空の文字列に展開されるのb=""と同じです。変数に対するモジュール演算は、算術展開で行うことができます: .b=""number=$((RANDOM%9))