2013-09-07 2 views
0

я есть ш-Script с:directorylist в скорлупе ш-Script

#!/bin/sh 

    dirs=($(find . -maxdepth 1 -type d -printf '%P\n')) 
     echo "There are ${#dirs[@]} dirs in the current path" 

     let i=1 

     for dir in "${dirs[@]}"; do 
      echo "$((i++)) $dir" 
     done 
     answer=2 

     echo "you selected ${dirs[$answer]}!" 

Но я получил ошибку:

symfonymenu.sh: Syntax error: "(" unexpected (expecting "}")

его линия ... DIRS =

I как эхо всех доступных каталогов в папке, которую пользователь может выбрать в подсказке.

ответ

3

Вы используете функции оболочки bash, поэтому вы должны выполнить скрипт в bash. Измените первую строку на:

#!/bin/bash 

/bin/sh может быть любой POSIX-совместимой оболочкой, например, на Ubuntu это тир.

+1

'/ bin/sh' - это оболочка POSIX, основанная на исходной оболочке Bourne, но не эквивалентная ей. – chepner

2

Это сценарий bash, поэтому вы должны убедиться, что используете его с помощью bash. Назовите его bash script.sh. Также вы должны начать свой индекс с 0 не 1: let i=0.

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