意外'('在bash中

时间:2015-02-18 16:31:52

标签: bash

我有以下脚本:

#!/bin/sh

# Use the PhiPack software on our two aligned sets of sequences...
mkdir FcFeABC
cd FcFeABC
../bin/PhiPack/Phi -f ../../Data/Real_Sequences_and_Networks/FcFeABC_alignment.fas -o -v -w 10 -g
cd -

mkdir FcL10
cd FcL10
../bin/PhiPack/Phi -f ../../Data/Real_Sequences_and_Networks/FcL10_alignment.fas -o -v -w 10 -g
cd -

# Use the PhiPack software on the simulated Datasets...
cd ../Data/Simulated_Sequences_and_Networks/Constant_Sex/Theta\ =\ 0.066/Theta\ =\ 0.066/Medium/CutSequences/;
rmus=($(ls -d *.fas))
cd -
absfiles=(../Data/Simulated_Sequences_and_Networks/Constant_Sex/Theta\ =\ 0.066/Theta\ =\ 0.066/Medium/CutSequences/*.fas)
if [ ${#rmus[@]} = ${#absfiles[@]} ]
then
    mkdir ${rmus[@]}
    for ((i=0; i<${#absfiles[@]}; i++));
    do
        cd ${rmus[$i]}
    .../bin/PhiPack/Phi -f ${absfiles[$i]} -o -v -w 10 -g
        cd -
    done
else
    echo "Error, Number of files created and files to be read differs"
fi

在第16行遇到错误:

./runPhiTests.sh: 16: ./runPhiTests.sh: Syntax error: "(" unexpected

这一行:

rmus=($(ls -d *.fas))

我不明白为什么'('是意料之外的 - 这是ls对数组的简单结果。

谢谢, 本W。

2 个答案:

答案 0 :(得分:4)

您没有使用bash运行它。您从shebang行/bin/sh开始使用#!/bin/sh

使用bash明确地bash runPhiTests.sh运行或修复你的shebang行#!/bin/bash

答案 1 :(得分:1)

尝试使用#!/ bin / bash而不是sh。