Bash Loop 2阵列

时间:2014-07-14 00:17:57

标签: arrays bash

我试图为几个阵列创建一个循环,但是我收到了这个错误:

./bash.sh: 3: ./bash.sh: source[0]=/media/jon/my\ directory/: not found

这就是我的代码:

sourceFiles[1]=/media/jon/ACER/Documents\ and\ Settings/Laura/Documents/Shared
destinationFiles[1]=/media/jon/My\ Book/Shared

for index in ${!sourceFiles[@]}
do
  sudo rsync -a --delete ${sourceFiles[$index]} ${destinationFiles[$index]}
done

我认为什么是绿色的bash文件,这非常令人沮丧,做一个简单的循环是如此困难。

更新

根据正确答案,我在顶部需要#!/bin/bash

2 个答案:

答案 0 :(得分:2)

您的代码看起来不错。我认为你并没有使用bash("未找到"不是bash错误消息)。您是否正在使用/bin/sh?在许多系统中,这是一个最小的POSIX shell,而不是bash。

POSIX shell不会将sourceFiles[1]=...识别为赋值,因此会将其作为命令运行。因此"未找到"错误。

答案 1 :(得分:2)

请尝试在sudo行中用双引号括起变量:

sudo rsync -a --delete "${sourceFiles[$index]}" "${destinationFiles[$index]}"