LINUX.ORG.RU

История изменений

Исправление sdio, (текущая версия) :

Чистый баш без единой доп. утилиты.

#!/bin/bash

TAB=( '' '4' '3' '3 4' '2' '2 4' '2 3' '2 3 4' '1' '1 4' '1 3' '1 3 4' '1 2' '1 2 4' '1 2 3' '1 2 3 4')

INPUT="$1"

i=0
w=0
while [ "${INPUT:$i:1}" ]; do
    sym="${INPUT:$i:1}"
# filter and "convert" input characters
    case $sym in
        "0" )
            ;;
        "1" )
            ;;
        "2" )
            ;;
        "3" )
            ;;
        "4" )
            ;;
        "5" )
            ;;
        "6" )
            ;;
        "7" )
            ;;
        "8" )
            ;;
        "9" )
            ;;
        "a" )
            sym=10;;
        "A" )
            sym=10;;
        "b" )
            sym=11;;
        "B" )
            sym=11;;
        "c" )
            sym=12;;
        "C" )
            sym=12;;
        "d" )
            sym=13 ;;
        "D" )
            sym=13 ;;
        "e" )
            sym=14 ;;
        "E" )
            sym=14 ;;
        "f" )
            sym=15 ;;
        "F" )
            sym=15 ;;
        *)
            sym='-1' ;;
    esac
    i=$(($i+1))
    if [ "$sym" != '-1' ]; then
        LST="${TAB[$sym]}"
        for s in $LST; do
            echo $(($s+$w))
        done
        w=$(($w+4))
    fi
done
./1.sh '20 08 03 00'
3
13
23
24

Исходная версия sdio, :

Чистый баш без единой доп. утилиты.

#!/bin/bash

TAB=( '' '4' '3' '3 4' '2' '2 4' '2 3' '2 3 4' '1' '1 4' '1 3' '1 3 4' '1 2' '1 2 4' '1 2 3' '1 2 3 4')

INPUT="$1"

i=0
w=0
while [ "${INPUT:$i:1}" ]; do
    sym="${INPUT:$i:1}"
# filter and "convert" input characters
    case $sym in
        "0" )
            ;;
        "1" )
            ;;
        "2" )
            ;;
        "3" )
            ;;
        "4" )
            ;;
        "5" )
            ;;
        "6" )
            ;;
        "7" )
            ;;
        "8" )
            ;;
        "9" )
            ;;
        "a" )
            sym=10;;
        "A" )
            sym=10;;
        "b" )
            sym=11;;
        "B" )
            sym=11;;
        "c" )
            sym=12;;
        "C" )
            sym=12;;
        "d" )
            sym=13 ;;
        "D" )
            sym=13 ;;
        "e" )
            sym=14 ;;
        "E" )
            sym=14 ;;
        "f" )
            sym=15 ;;
        "F" )
            sym=15 ;;
        *)
            sym='-1' ;;
    esac
    i=$(($i+1))
    if [ "$sym" != '-1' ]; then
        LST="${TAB[$sym]}"
        for s in $LST; do
            echo $(($s+$w))
        done
        w=$(($w+4))
    fi
done