我有一段脚本,我想弄清楚,所以对于更有经验的人来说,这可能是一个简单的问题。
这是代码:
#!/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")