我在Bash shell Decimal to Binary conversion中看到了以下代码,我想知道它是如何工作的?我试着谷歌搜索无济于事。
D2B=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})
echo ${D2B[7]}
上面的代码是做什么的?
答案 0 :(得分:3)
{N..M}
,对于整数文字N和M,生成从N到M的整数序列,包含空格分隔。这称为“brace expansion”,是bashism。如您所见,所有大括号扩展都是在它们之间添加空格之前完成的。
variable=({some expansion})
将每个展开的项目放在array中,${variable[index number]}
提取该索引处的值。因此,您的代码有效地以二进制字符串形式返回数字7。
答案 1 :(得分:0)
正如另外一个提示:这个结构是相当通用的,因为它适用于任何基于n的编号系统,最多n = 9.八进制为例:
$ D2O=({0..7}{0..7}{0..7}{0..7})
$ echo ${D2O[7]}
0007
$ echo ${D2O[8]}
0010
$ echo ${D2O[668]}
1234
$ echo ${D2O[4095]}
7777
可以按照Bash shell Decimal to Binary conversion中所述的相同方式删除前导零:
echo $((10#${D2O[7]}))
7