1

我有一段我正在试图弄清楚的脚本,所以对于那些更有经验的人来说,这可能是一个简单的问题。

这是代码:

#!/bin/bash
echo "obase=2;$1" | bc

像这样使用:

$./script 12

输出:

1100

我的问题是,如何将这个 4 位数字解析为单独的数字? (然后用 cut -d ' ' 分隔并将它们输入到数组中......)

我希望能够得到以下输出:

1 1 0 0 

这在 BASH 中是否可行?我知道使用其他语言更容易。

4

2 回答 2

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'
于 2014-02-21T08:12:51.677 回答
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")
于 2014-02-21T08:15:36.273 回答