bash/terminal コマンドでエコーさせたい
... . . . . . . .. ...... .. . . .
言い換えれば、ランダムな量のドット、おそらく最大 100 ドット、スペースが混在しています。
これはbashスクリプトを介してどのように行うことができますか?
行を本当にランダムにしたい場合は、次のように言います。
cat /dev/urandom | tr -dc '. ' | fold -w 100 | head -1
変数に割り当てるには、次のように言います。
foo=$(cat /dev/urandom | tr -dc '. ' | fold -w 100 | head -1)
サンプル出力は次のようになります。
...... . . . ....... . ... ..... . ... . . . . . .. .... . . . . ... . .
簡単に言うと:
cat /dev/urandom | tr -dc '. ' | fold -w 100
中断するまで、100 文字幅のランダム データの無限の行が生成されます。
ここにワンライナーがあります:
max=$((RANDOM%100)); for ((i=0;i<max;i++)); do ((RANDOM%2)) && a="$a." || a="$a "; done; echo "$a"
またはより読みやすい形式で:
max=$((RANDOM%100))
for ((i=0;i<max;i++))
do
((RANDOM%2)) && a="$a." || a="$a "
done
echo "$a"
これはどう?
#!/bin/bash
for i in {1..100}; do
even=$(( $RANDOM % 2 ))
if [ $even -eq 0 ]; then
printf " ";
else
printf "."
fi
done
printf "\n"
またはコメントで尋ねられたように:
#!/bin/bash
a=$(
for i in {1..100}; do
even=$(( $RANDOM % 2 ))
if [ $even -eq 0 ]; then
printf " ";
else
printf "."
fi
done
printf "\n"
)
echo $a