Непонятный код, просьба о помощи [закрыто]

Мне нужна помощь. Недавно я написал сценарий bash, в котором есть 26 наборов переменных. Я застрял в этой части, с которой мне нужна помощь. Я заметил, когда вы устанавливаете Ubuntu, чтобы проверить этот сайт, если вам нужна помощь, и теперь я обращаюсь. В основном, у меня есть переменные, помеченные l # a, с любым числом 1-26. Я хочу сделать следующее: он зацикливает диапазон точно так же, как вы считаете от 1 до 10, здесь всего 9 цифр. Но в этом случае я хочу, чтобы их считали так, как если бы их было 64. Скажем так.

Начиная с «l1a», он начинается с 0 и продолжает прибавлять 1, пока не дойдет до 64, когда он дойдет до 64, он ждет, пока не достигнет отметки 65, но вместо того, чтобы заходить так далеко, он проверяет значение преемника (в данном случае "l2a"), и если оно не 64, оно ставит галочку на 1 и устанавливает l1a в 0. Если это так, он проверяет следующее, чтобы увидеть, 64 или нет, если нет , он отмечает это значение на 1 и устанавливает все до этого на 0, если это так, он проверяет следующий и так далее. Когда он находит цифру, отличную от 64, она ставит галочку, и значение каждого предшественника возвращается к 0. Но, если оно дойдет до l26a, и это 64, а также все остальные цифры, он заканчивает код.

КОД:

l1a=0
l2a=0
l3a=0
l4a=0
l5a=0
l6a=0
l7a=0
l8a=0
l9a=0
l10a=0
l11a=0
l12a=0
l13a=0
l14a=0
l15a=0
l16a=0
l17a=0
l18a=0
l19a=0
l20a=0
l21a=0
l22a=0
l23a=0
l24a=0
l25a=0
l26a=0
l1b="0"
l2b="0"
l3b="0"
l4b="0"
l5b="0"
l6b="0"
l7b="0"
l8b="0"
l9b="0"
l10b="0"
l11b="0"
l12b="0"
l13b="0"
l14b="0"
l15b="0"
l16b="0"
l17b="0"
l18b="0"
l19b="0"
l20b="0"
l21b="0"
l22b="0"
l23b="0"
l24b="0"
l25b="0"
l26b="0"
n=1
n2=0
p=1
let n2 = n + 1
l=0
u10="_"
u11="a"
u12="b"
u13="c"
u14="d"
u15="e"
u16="f"
u17="g"
u18="h"
u19="i"
u20="j"
u21="k"
u22="l"
u23="m"
u24="n"
u25="o"
u26="p"
u27="q"
u28="r"
u29="s"
u30="t"
u31="u"
u32="v"
u33="w"
u34="x"
u35="y"
u36="z"
u37="A"
u38="B"
u39="C"
u40="D"
u41="E"
u42="F"
u43="G"
u44="H"
u45="G"
u46="H"
u47="I"
u48="J"
u49="K"
u50="L"
u51="M"
u52="N"
u53="O"
u54="P"
u55="Q"
u56="R"
u57="S"
u58="T"
u59="U"
u60="V"
u61="W"
u62="X"
u63="Y"
u64="Z"
while true; do
    cd /home/eddy/Pictures/MCSkins/Auto
let n = 1
if [ "$l" -lt "10" ]; then
    let l"$n"b = l"$n"a
else
    let l"$n"b = u"$l"
fi
if [ "$l" -le "64" ]; then
    let l = l + 1
else
    if [ "$l+$p" -le "64" ]; then
        let 
0
задан 7 May 2014 в 16:49

1 ответ

Ай! Это идеально подходящее для массивов:

declare -a la lb
for n in {1..26}; do
    la[$n]=0
    lb[$n]="0"
done

declare -a u=(
    [10]="_" [11]="a" [12]="b" [13]="c" [14]="d" [15]="e" [16]="f" [17]="g"
    [18]="h" [19]="i" [20]="j" [21]="k" [22]="l" [23]="m" [24]="n" [25]="o"
    [26]="p" [27]="q" [28]="r" [29]="s" [30]="t" [31]="u" [32]="v" [33]="w"
    [34]="x" [35]="y" [36]="z" [37]="A" [38]="B" [39]="C" [40]="D" [41]="E"
    [42]="F" [43]="G" [44]="H" [45]="G" [46]="H" [47]="I" [48]="J" [49]="K"
    [50]="L" [51]="M" [52]="N" [53]="O" [54]="P" [55]="Q" [56]="R" [57]="S"
    [58]="T" [59]="U" [60]="V" [61]="W" [62]="X" [63]="Y" [64]="Z"
)

declare -i n
declare -i n2
declare -i l
declare -i p=1

cd /home/eddy/Pictures/MCSkins/Auto
while true; do
n=1
if (( $l < 10 )); then
    lb[$n]=${la[$n]}
else
    lb[$n]=${u[$l]}
fi
if (( $l <= 64 )); then
    ((l++))
else
    if (( $l + $p <= 64 )); then
        # ...
2
ответ дан 7 October 2019 в 11:11

Другие вопросы по тегам:

Похожие вопросы: