2016-04-09 30 views
1

私が書いたスクリプトのテストは、最も単純なtrコマンドのように書いています。テストのための私のアイデアは、私は並列trコマンドとスクリプトで実行し、出力を変数に保存し、変数を比較することでした。まず、スクリプトの実行を停止する方法は?私はテストと私のsciptの両方のコードを囲みます。次に、スクリプトとtrの出力を変数に保存する方法は?私はvar = $(関数)を試しましたが、動作しません。並行して呼び出す方法はありますか?例えば。私はテストを開始し、次に 'abba'と書いてみましょう。両方のスクリプトがパラレルで 'ABBA'に変更されることを望みます。スクリプトAをスクリプトB内で実行し、スクリプトBを終了せずにスクリプトBを終了します。

それは良い考えですか?私はこれまでに「正式な」テストを書いたことはありません。

テストコード:

#!/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 
+0

'.'コマンドを使用しているので、Aと同じインタプリタでBのコードを実行しているので、それらは同じプログラムです。 –

答えて

2

nohupを試してみてください。

例:

$(nohup ./your/script/here.sh > somefile.out 2> somefile.err < /dev/null &) 

nohupコマンド基本的には、バックグラウンドでプロセスを実行することができますが、その間に、あなたは(それを終了するため除く)任意の手段によってプログラムと対話することはできません。 (詳細はnohup docsを参照してください)

あなたの出力にはsomefile.outをチェックできます。

また、top(プロセスマネージャ)またはkill -SIGTERM PID(これはスクリプトで使用することができます:$(kill -SIGTERM PID))を終了するには、 (PIDはプロセスIDで、上にも表示されます)

出力を比較するには、./your/script/A.sh > file.outを使用して、diff file.out somefile.outを使用して2つのファイルの違いをチェックします。

+0

'nohup'はバックグラウンドでコマンドを実行しません。 'nohup'はハングアップの影響を受けないコマンドを実行し、非ttyに出力します。これは、行の最後に '&'を追加する理由でもあり、コマンドをバックグラウンドで実行させることになります。 –

+0

あります。 "あなたが許可する" – ForceMagic

関連する問題