2016-09-18 45 views
0

当我运行下面的代码我得到语法错误:意外字(预期“)”)

#!/bin/bash 
folder="~/Desktop/" 
if [ -d "$folder" ]; 
    then 
    cd $folder; 
    listofpdf=$(find *.pdf -type f); 
    fi 
echo ${listofpdf}; 

for words in $listofpdf 
do 
array+=("$words") 
done  

我得到“语法错误:意外字(预期‘)’)”。它似乎与数组变量有关。欣赏更正。在此先感谢

+4

执行脚本如果你正在运行的脚本来运行, 'sh scriptname',shebang被忽略。 – chepner

+1

是的,'dash'用来解释脚本,因此语法错误。顺便说一句,shell在行尾不需要所有这些分号,它们只需要在同一行中分隔语句。 – jlliagre

+0

此外,'folder =“〜/ Desktop”'在bash中不起作用,因为双引号可以防止代字符扩展,在'cd $ folder'中,代字符扩展在变量扩展之前发生,所以代字号不会扩展。 – choroba

回答

2

尽管您的脚本是有效的bash脚本,但它不是有效的POSIX shell脚本:不支持数组。即使shbash的链接或副本,它也会以严格的POSIX模式运行。为了运行与bash扩展脚本,它必须bash通过运行bash script或(像你一样)使用#!/bin/bash的家当,并直接与./script