我试图为几个阵列创建一个循环,但是我收到了这个错误:
./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
。
答案 0 :(得分:2)
您的代码看起来不错。我认为你并没有使用bash("未找到"不是bash错误消息)。您是否正在使用/bin/sh
?在许多系统中,这是一个最小的POSIX shell,而不是bash。
POSIX shell不会将sourceFiles[1]=...
识别为赋值,因此会将其作为命令运行。因此"未找到"错误。
答案 1 :(得分:2)
请尝试在sudo行中用双引号括起变量:
sudo rsync -a --delete "${sourceFiles[$index]}" "${destinationFiles[$index]}"