Ich schreibe einen Test für ein Skript, das ich geschrieben habe, und funktioniert wie der einfachste tr-Befehl. Meine Idee für einen Test war, dass ich parallel tr-Befehl und mein Skript ausführen, Ausgabe in Variablen speichern und die Variablen vergleichen würde. Vor allem, wie man Skript von runnning forver stoppt? Ich lege Codes sowohl des Tests als auch meines Scipts bei. Zweitens, wie kann ich die Ausgabe meines Skripts und von tr in eine Variable speichern? Ich habe versucht, var = $ (Funktion), aber es funktioniert nicht. Und gibt es eine Möglichkeit, sie parallel anzurufen? Z.B. Ich werde den Test starten und dann 'abba' schreiben und ich möchte, dass beide Skripte es in "ABBA" ändern.Führen Sie Skript A in einem Skript B aus und beenden Sie dann Skript B, ohne Skript zu beenden. A
Und ist es eine gute Idee? Ich habe noch nie "formale" Tests geschrieben.
Prüfregeln:
#!/bin/bash
**tr_znakiScript="/home/wiktoria/skrypty/testy/tr_znaki.sh"
echo "this script is about to run another script"
a=ab
b=AB
echo "$a"
echo "$b"
. $tr_znakiScript "$a" "$b"
exit 1
# x=2;
#while [ $x -le 2 ]; do
#echo "Napis pojawił się po raz: $x"
#x=$[x + 1]
#hash=$(. $tr_znakiScript "$a" "$b")
#. $tr_znakiScript "$a" "$b"
#echo $hash
#done
#echo $hash**
tr_znaki.sh Code
#!/bin/bash
first_two="$1 $2" #zapisuje dwia pierwsze znaki do wspolnej zmiennej
a="$1";b="$2" #rozdziela znaki
split1=$(echo $a | fold -w 1) #rozdziela a na litery i wypisuje
split2=$(echo $b | fold -w 1) #rozdziela a na litery i wypisuje
arr1=($split1) #zapisanie stringu do tablicy
arr2=($split2) #zapisanie stringu do tablicy
shift #usuwa pierwszy argument
shift #usuwa drugi argument
size1=${#arr1[@]} #zapisanie rozmiaru arr1 do zmiennej
size2=${#arr2[@]} #zapisanie rozmiaru arr2 do zmiennej
# nieskończona pętla pozwalająca na ciągłe wpisywanie tekstu do translacji, przerywana standardowo ctrl + c
while true
do
read tekst #zmienna, do której wpisywany jest przez użytkownika tekst
mod=$tekst #zapisanie wpisanego tekstu do zmiennej
for ((i=0; i<${size1}; i++));
do
mod=${mod//[${arr1[i]}]/${arr2[i]}} #nowa zmienna z zamianą którejś z wartości w arr na odpowiadającą wartość w arr2
done
echo $mod #wypisanie zmienionego tekstu
#sleep 1 #czeka sekundę
done
Da Sie den '.' Befehl verwenden, führen Sie den B-Code im selben Interpreter wie A. Sie sind also das gleiche Programm. –