这是代码
#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脚本的新手。刚开始学习它。是否存在某种范围错误?
答案 0 :(得分:5)
您的超级用户(root)可能有一个不支持数组的不同shell(例如dash
或其他一些小shell。)尝试仅使用标准的bourne shell结构进行编程。或者在脚本的标题中包含要使用的解释器:
#! /bin/bash