Bash,一个目录,从脚本运行脚本,异常错误

Bash,一个目录,从脚本运行脚本,异常错误,bash,shell,Bash,Shell,我试图通过在另一个脚本中运行来测试我的脚本。我在谷歌上搜索了一些解决方案并实现了它们(顺便说一句,两个脚本都在一个目录中),但我一直遇到以下错误 ./tr_znaki.sh:13:./tr_znaki.sh:语法错误:“(意外 这是我的密码 #!/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" 有什么想法吗

我试图通过在另一个脚本中运行来测试我的脚本。我在谷歌上搜索了一些解决方案并实现了它们(顺便说一句,两个脚本都在一个目录中),但我一直遇到以下错误

./tr_znaki.sh:13:./tr_znaki.sh:语法错误:“(意外

这是我的密码

#!/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
first_two=“$1$2”#zapisuje dwia pierwsze znaki do wspolnej zmiennej
a=“$1”b=“$2”#罗兹耶拉·兹纳基
split1=$(echo$a | fold-w 1)#rozdziela a na literi i wypisuje
split2=$(echo$b | fold-w1)#rozdziela a na literi i wypisuje
arr1=($split1)#zapisanie stringu do
arr2=($split2)#zapisanie stringu do
shift#usuwa-pierwszy论点
移位#usuwa-drugi参数
size1=${#arr1[@]}扎皮萨尼·罗兹米亚鲁·阿鲁多·兹米安内
size2=${#arr2[@]}扎皮萨尼·罗兹米亚鲁·阿鲁·多兹米安尼
#nieskoêczona pętla pozwalająca na ciągłe wpisywanie tekstu do translacji,przerywana standardowo ctrl+c
虽然是真的
做
读一读tekst#zmiena,读一读której wpisywany的笑话
mod=$tekst#zapisanie wpisanego tekstu do zmiennej

对于((i=0;i我建议添加脚本以在变量中执行: 试着这样做:

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

我建议添加要在变量中执行的脚本: 试着这样做:

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

问题是您正在使用
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"

问题是您正在使用
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"

好的,那么tr_znaki.sh看起来像什么?tr_znaki.sh的第13行是什么?好的,那么tr_znaki.sh看起来像什么?tr_znaki.sh的第13行是什么?
?我一定删除了它,因为在文件的顶部我有一些自己的评论,但是tr_znaki.sh文件中有一行“!/bin/bash”。shebang行只起作用s如果将脚本作为命令运行,则如果将脚本作为参数显式运行
sh
bash
,则脚本无效。我必须已将其删除,因为在文件顶部我有一些自己的注释,但tr#znaki.sh文件中有行#!/bin/bash。只有将脚本作为命令运行时,shebang行才起作用而且,如果您以脚本作为参数显式运行
sh
bash
,则它没有任何效果。