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

not*_*shi 2 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
Run Code Online (Sandbox Code Playgroud)

用于运行此行的行是:

getpack2 vocals-doo flute-wood
Run Code Online (Sandbox Code Playgroud)

这将创建所需的目录和文件

这也有效:

./getpack2 vocals-doo flute-wood
Run Code Online (Sandbox Code Playgroud)

但是,当我用sudo为命令添加前缀时:

sudo ./getpack2 vocals-doo flute-wood
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误

./getpack2: 7: ARRAY[0]=vocals-doo: not found
./getpack2: 7: ARRAY[1]=flute-wood: not found
./getpack2: 15: Bad Substitution
Run Code Online (Sandbox Code Playgroud)

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

Die*_*lla 5

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

#! /bin/bash
Run Code Online (Sandbox Code Playgroud)