Я пишу тест для сценария, который я написал, и работает как простейшая команда tr. Моя идея теста заключалась в том, что я буду запускать параллельную команду tr и мой скрипт, сохранять вывод в переменных и сравнивать переменные. Прежде всего, как остановить скрипт из runnning forver? Я прилагаю коды как теста, так и моего сеанса. Во-вторых, как сохранить вывод моего скрипта и tr в переменную? Я пробовал var = $ (function), но он не работает. И есть ли способ вызвать их параллельно? Например. Я начну тест, а затем напишу 'abba', и я бы хотел, чтобы оба скрипта изменили его на pallalel на 'ABBA'.Запустить сценарий A внутри сценария B, а затем выйти из сценария B без выхода из сценария A
И это хорошая идея? Раньше я никогда не писал «формальные» тесты.
код теста:
#!/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 код
#!/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
Поскольку вы используете команду '.', вы выполняете код B в том же интерпретаторе, что и A. Таким образом, они являются одной и той же программой. –