2016-04-07 205 views
0

我試圖通過在另一個腳本中運行它來測試我的腳本。我搜索了一些解決方案並實現了它們(順便說一句 - 這兩個腳本都在一個目錄中),但我不斷收到以下錯誤。Bash,一個目錄,從腳本運行腳本,非常錯誤

./tr_znaki.sh: 13: ./tr_znaki.sh: Syntax error: "(" unexpected

這是我的代碼。

#!/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" 

任何想法?

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運行它,那麼,是什麼tr_znaki.sh樣子? –

+0

'。/ tr_znaki.sh'的第13行是什麼? –

回答

1

我會建議添加腳本變量來執行: 嘗試是這樣的:

 #!/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" 

開頭刪除SH

+0

工程就像一個魅力,謝謝! – ninigi

2

的問題是您正在運行第二個腳本,其中sh而不是bash。陣列是一個bash延伸,所以

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

不能與sh使用。運行該腳本:

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

或更改tr_znaki.sh開始與

#!/bin/bash 

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

我必須刪除它,因爲在文件頂部我有一些我自己的評論,但是行#!/ bin/bash存在於tr_znaki.sh文件中。 – ninigi

+0

如果您將腳本作爲命令運行,那麼shebang行就會非常重要,如果您以該腳本作爲參數明確運行'sh'或'bash',則它不起作用。 – Barmar