我有一段我正在试图弄清楚的脚本,所以对于那些更有经验的人来说,这可能是一个简单的问题。
这是代码:
#!/bin/bash
echo "obase=2;$1" | bc
像这样使用:
$./script 12
输出:
1100
我的问题是,如何将这个 4 位数字解析为单独的数字? (然后用 cut -d ' ' 分隔并将它们输入到数组中......)
我希望能够得到以下输出:
1 1 0 0
这在 BASH 中是否可行?我知道使用其他语言更容易。
可以使用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'
要从字符串中打印单个数字,您可以使用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")