我有一个我想弄清楚的剧本,所以对于那些经验丰富的人来说,这可能是一个简单的问题。
以下是代码:
#!/bin/bash
echo "obase=2;$1" | bc
用过:
$./script 12
输出:
1100
我的问题是,如何将这个4位数字解析成单独的数字? (然后用cut -d'分隔并将它们输入数组......)< / em>
我希望能够获得以下输出:
1 1 0 0
这在BASH中是否可行?我知道用其他语言更容易。
答案 0 :(得分:1)
可以使用sed
echo "obase=2;$1" | bc | sed 's/./& /g'
或者如果你喜欢更长的形式:
echo "obase=2;$1" | bc | sed 's/\(.\)/\1 /g'
如果您的sed
支持-r
echo "obase=2;$1" | bc | sed -r 's/(.)/\1 /g'
答案 1 :(得分:1)
要从字符串中打印个别数字,您可以使用fold
:
s=1100
fold -w1 <<< "$s"
1
1
0
0
创建数组:
arr=( $(fold -w1 <<< "$s") )
set|grep arr
arr=([0]="1" [1]="1" [2]="0" [3]="0")