2016-09-18 48 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

相關問題