2016-04-07 17 views
0

Komut dosyanızı başka bir komut dosyasının içinde çalıştırarak denemeyi deniyorum. Bazı çözümler hazırladım ve bunları uyguladım (btw - her iki betik de bir dizinde) ancak şu hatayı alıyorum.Bash, bir dizin, bir komut dosyasından komut dosyasını çalıştırır, olağanüstü hata

İşte benim kodum.

#!/bin/bash 
echo "this script is about to run another script" 
a=ab 
b=AB 
echo "$a" 
echo "$b" 
sh ./tr_znaki.sh "$a" "$b" 

Herhangi bir fikir?

znaki_tr.sh

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

OK ile çalıştırmak için, yani ne gibi bakmak tr_znaki.sh yapar: ile komut dosyasını çalıştırın? –

+0

./Tr_znaki.sh''nin Satırı 13'ü nedir? –

cevap

1

Bir değişkende yürütmek için komut dosyası eklemek öneriyoruz: böyle bir şey deneyin:

 #!/bin/bash 
     tr_znakiScript="/Directory/From/My/Script/tr_znaki.sh" 
     echo "this script is about to run another script" 
     a=ab 
     b=AB 
     echo "$a" 
     echo "$b" 
    . $tr_znakiScript "$a" "$b" 

başında sh kaldırmak

+0

Bir çekicilik gibi çalışır, teşekkürler! – ninigi

2

Sorun, bash yerine sh ile ikinci komut dosyasını çalıştırıyor. Diziler bir bash uzantısıdır, bu yüzden

ize1=${#arr1[@]} #zapisanie rozmiaru arr1 do zmiennej 

sh ile kullanılamaz.

bash ./tr_znaki.sh "$a" "$b" 

Veya değiştirmek tr_znaki.sh

#!/bin/bash 

başlayıp

./tr_znaki.sh "$a" "$b" 
+0

Dosyayı sildiğim için kendim için bazı yorumlar yaptım, ancak #!/Bin/bash tr_znaki.sh dosyasında mevcut. – ninigi

+0

Shebang çizgisi, yalnızca komut dosyasını komut olarak çalıştırırsanız önemlidir, komut dosyasıyla bir argüman olarak açık olarak "sh" veya "bash" çalıştırırsanız hiçbir etkisi olmaz. – Barmar

İlgili konular