2016-04-07 34 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