使用sudo运行时我的shell脚本出了什么问题?

时间:2012-03-03 22:38:01

标签: bash shell terminal sudo

这是代码

#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

我是shell脚本的新手。刚开始学习它。是否存在某种范围错误?

1 个答案:

答案 0 :(得分:5)

您的超级用户(root)可能有一个不支持数组的不同shell(例如dash或其他一些小shell。)尝试仅使用标准的bourne shell结构进行编程。或者在脚本的标题中包含要使用的解释器:

#! /bin/bash