1

我正在尝试创建一个用于备份到外部驱动器的 BASH 脚本。我会运行这个脚本来检查连接了哪个驱动器,然后运行 ​​rsync。我是 BASH 的新手,不能完全弄清楚它是 if then else。有人可以帮忙吗?我当时想的是。

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
4

2 回答 2

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

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

于 2013-05-20T17:36:45.323 回答
2

使用多个路径做完全相同的事情通常最简单地使用变量和 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
于 2013-05-20T17:38:26.320 回答