什么是我的bash变量

时间:2014-08-17 14:55:36

标签: bash random

好的,对你们中的一些人来说这看起来很愚蠢,但我几乎100%肯定我做的事情是正确的。无论我怎么努力,我总是以"为什么结束?"

编辑,如果我让number = $(rolldice -u 1d20); echo $ rolldice;在循环中运行我得到类似这样的东西

1
2
7
...

我的问题是,有没有办法确切地看到我得到的是$ number(包括所有空格和其他废话)?

<code here>
number=$(rolldice -u 1d20)
case $number in
1) let "one += 1"
;;
2) let "two += 1"
;;
3) let "three += 1"
;;
4) let "four += 1"
;;
5) let "five += 1"
;;
6) let "six += 1"
;;
7) let "seven += 1"
;;
8) let "eight += 1"
;;
9) let "nine += 1"
;;
10) let "ten += 1"
;;
11) let "eleven += 1"
;;
12) let "twelve += 1"
;;
13) let "thirteen += 1"
;;
14) let "fourteen += 1"
;;
15) let "fifteen += 1"
;;
16) let "sixteen += 1"
;;
17) let "seventeen += 1"
;;
18) let "eighteen += 1"
;;
19) let "nineteen += 1"
;;
20) let "twenty += 1"
;;
*) echo Why?
    exit;
;;
<more code here>

它耗尽我正在获得数字和空格。谢谢你&#39; konsolebox&#39; &LT; 3

2 个答案:

答案 0 :(得分:3)

使用echo

echo "|$number|"

或者使用hexdump,这样您就可以准确地看到您获得的白色空间形式:

echo -n "$number" | hexdump -C

-n阻止在字符串末尾添加换行符。

答案 1 :(得分:0)

我强烈建议使用数组:

declare -a count
for ((i=0; i<100; i++)); do
    number=$(rolldice -u 1d20)
    ((count[number]++))
done

for idx in "${!count[@]}"; do
    printf "%3d: %d\n" $idx ${count[idx]}
done
相关问题