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

时间:2016-04-07 21:46:07

标签: 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"

有什么想法吗?

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

1 个答案:

答案 0 :(得分: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"