![令人困惑的代码,请求帮助](https://linux22.com/image/1046481/%E4%BB%A4%E4%BA%BA%E5%9B%B0%E6%83%91%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E8%AF%B7%E6%B1%82%E5%B8%AE%E5%8A%A9.png)
我需要帮助。我最近在编写一个 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
答案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
# ...