bash if then else如果备份到两个驱动器

时间:2013-05-20 17:27:48

标签: bash

我正在尝试创建一个用于备份到外部驱动器的BASH脚本。我运行此脚本来检查连接了哪个驱动器,然后运行rsync。我是BASH的新手,如果不是其他的话,我不能理解它。有人可以帮忙吗?我在想什么。

If [ /Volumes/Drive_1]
 then
     sudo rsync -avx /Volumes/1/2\ __3__/ /Volumes/Drive_1
 else
     If [ /Volumes/Drive_2]
 then
     sudo rsync -avx /Volumes/1/2\ __3__/ /Volumes/Drive_2
 fi

2 个答案:

答案 0 :(得分:3)

首先,它是if,而不是If(案例事项)。要检查驱动器是否存在,您需要查看给定的字符串是否为目录命名,因此您需要-d主数据库。

 if [ -d /Volumes/Drive_1 ]
 then
     sudo rsync -avx /Volumes/1/2\ __3__/ /Volumes/Drive_1
 elif [ -d /Volumes/Drive_2 ]
 then
     sudo rsync -avx /Volumes/1/2\ __3__/ /Volumes/Drive_2
 fi

[]与它们之间的代码分隔开的空格是必要的。

答案 1 :(得分:2)

使用Variable和For

通常可以完成多个路径的完全相同的操作

例如

# Stores all Paths to BackupPaths
BackupPaths=( "/Path/to/First" "/Path/to/second" .... )

# Iterates for each Path and stores current in volume
# $volume allows for accessing the content of the variable
for volume in "${BackupPaths[@]}"; do
    if [ -d "$volume" ]
    then
        sudo rsync -avx /Volumes/1/2\ __3__/ "$volume"
    fi
done