Ich mache zum Spaß und dies als Teil meines Lernprozesses in Shell-Skripts.Shell-Skript: Arithmetische Operation in Array
Lassen Sie sagen, ich habe Ersteingabe A B C
Was ich zu tun ist, ich versucht, die Zeichenfolge und konvertieren jedes von ihnen Dezimalwert aufzuspalten.
A B C = 65 66 67
Dann werde ich den Dezimalwert auf Zufallszahl hinzufügen, sagen wir mal die Nummer 1.
Nun wird Dezimalwert werden = 66 67 68
Schließlich werde ich die Dezimalstelle auf die konvertieren ursprünglicher Wert wieder die B C D
[email protected]:~$ cat testscript.sh -n
#!/bin/bash
1 string="ABC"
2
3 echo -e "\nSTRING = $string"
4 echo LENGTH = ${#string}
5
6 # TUKAR STRING KE ARRAY ... word[x]
7 for i in $(seq 0 ${#string})
8 do word[$i]=${string:$i:1}
9 done
10
11 echo -e "\nZero element of array is [ ${word[0]} ]"
12 echo -e "Entire array is [ ${word[@]}] \n"
13
14 # CHAR to DECIMAL
15 for i in $(seq 0 ${#string})
16 do
17 echo -n ${word[$i]}
18 echo -n ${word[$i]} | od -An -tuC
19 chardec[$i]=$(echo -n ${word[$i]} | od -An -tuC)
20 done
21
22 echo -e "\nNEXT, DECIMAL VALUE PLUS ONE"
23 for i in $(seq 0 ${#string})
24 do
25 echo `expr ${chardec[$i]} + 1`
26 done
27
28 echo
Dies ist die Ausgabe
werden wirdWie Sie in der Ausgabe sehen können, gibt es zwei Probleme (oder vielleicht mehr)
- Die letzte
for
Schleifenverarbeitung zusätzliche Nummer. Irgendeine Idee, wie man das repariert?
NEXT, DECIMAL VALUE PLUS ONE 66 67 68 1
- Dies ist die Formel Dezimalwert zu umwandeln verkohlen. Ich versuche, den letzten Wert zu einem anderen Array zu legen und ihn dann in eine andere Schleife zu legen. Ich habe jedoch immer noch keine Ahnung, wie man dies in einer Schleife basierend auf vorherigen Daten macht.
[email protected]:~$ printf "\x$(printf %x 65)\n" A
Bitte geben
Wenn Sie mit 'bash' dann kann dieses Skript viel – anubhava
Recht vereinfacht werden sicher, es ist Bash, wenn man die Existenz von Arrays in Betracht zieht, nein? –
@anubhava, yup Ich benutze Bash Shell. Das erste Skript war sehr manuell ohne "loop" Dies ist mein erster Versuch, es zu vereinfachen. –