2016-09-18 3 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' используется для интерпретации сценария, поэтому синтаксическая ошибка. Кстати, оболочке не нужны все эти точки с запятой в конце строки, они необходимы только для разделения операторов в одной строке. – jlliagre

+0

Кроме того, 'folder =" ~/Desktop "' не работает в bash, поскольку двойные кавычки предотвращают расширение тильды, а в 'cd $ folder' расширение тильды происходит до расширения переменной, поэтому тильда не расширяется. – choroba

ответ

2

Хотя ваш скрипт является действительным сценарием bash, это недействительный сценарий оболочки POSIX: массивы не поддерживаются. Даже если sh является ссылкой или копией bash, она работает в строгом режиме POSIX. Для того чтобы запустить сценарий с bash расширениями, он должен быть запущен с bash, либо запустив bash script или (как вы это делали), используя #!/bin/bash как притон и выполнение сценария непосредственно ./script

Смежные вопросы