Что не так с моим сценарием оболочки при запуске с sudo? - PullRequest
2 голосов
/ 04 марта 2012

Вот код

#file is named getpack2
count=0
while [ -n "$*" ] ; do
    ARRAY[${count}]=$1
    shift
    count=`expr $count + 1`
done

for t in "${ARRAY[@]}"; do
    mkdir $t
    cd $t
    touch hello
    cd ..
done

строка, которую я использую для запуска, это:

getpack2 vocals-doo flute-wood

это создает нужные каталоги и файлы

это также будетработа:

./getpack2 vocals-doo flute-wood

однако, когда я префикс команды с sudo:

sudo ./getpack2 vocals-doo flute-wood

, это дает мне следующие ошибки

./getpack2: 7: ARRAY[0]=vocals-doo: not found
./getpack2: 7: ARRAY[1]=flute-wood: not found
./getpack2: 15: Bad Substitution

Я очень новичокдля сценариев оболочки.Только начал изучать это сегодня.Есть ли какая-то ошибка определения объема?

1 Ответ

5 голосов
/ 04 марта 2012

Ваш суперпользователь (root) может иметь другую оболочку, которая не поддерживает массивы (например, dash или некоторую другую небольшую оболочку.) Попробуйте программировать, используя только стандартные конструкции оболочки Борна.Или включите в заголовок вашего скрипта интерпретатор для использования:

#! /bin/bash
...