ランダムな整数を変数に追加して文字列を作成し、文字列を出力したいと考えています。ただし、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
) を実行する理由を説明しています。$number
b
削除するだけで、let
目的の動作1
、、が発生します。11
111
文字列連結を実行する別の方法:
b="$b$number"
はい、単純に「b
と を連結b
した結果になるようにしましょうnumber
。
補足として、はasが空の文字列に展開されるのb=""
と同じです。変数に対するモジュール演算は、算術展開で行うことができます: .b=
""
number=$((RANDOM%9))