这是密码

#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脚本很陌生。今天才开始学。是否存在某种范围界定错误?

最佳答案

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

#! /bin/bash

关于bash - 使用sudo运行时,我的shell脚本出了什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9550489/

10-10 07:19