我正在尝试创建一个用于备份到外部驱动器的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
答案 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