Разбор строк в Bash без разделителя

У меня есть фрагмент сценария, который я пытаюсь выяснить, так что, возможно, это простой вопрос для кого-то более опытного.

Вот код:

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

Используется как:

$./script 12

Выходы:

1100

У меня вопрос, как я могу разобрать это 4-значное число в отдельные цифры? (чтобы затем разделить с помощью cut -d ' ' и ввести их в массив...)

Я хотел бы получить следующий вывод:

1 1 0 0 

Это возможно даже в BASH? Я знаю это проще с другими языками.

2 ответа

Решение

Можешь использовать 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")
Другие вопросы по тегам