我已经看到了这个问题的变种,但它们都没有真正解决我的问题.
让我们说我正在建立一个有班级的军队.在我的继承结构的顶部,我有一个抽象的" 单元 "类.然后是一个抽象的" 飞行 "," 地面 "和" 建筑 "类,它扩展了单位.然后是一个延伸飞行的具体" 直升机 "和" 喷气式 "课程.以及延伸地面的具体" 士兵 "和" 坦克 "类.最后是一个扩展建筑的" 总部 "和" 供应 ".
以下是" 士兵 "类下的方法:
public void attack(Unit enemy){
if(enemy.getSuperclass().equals(Flying)){
System.out.print("Soldiers cant attack flying units");
}
else{
//Code to attack enemy here
}
Run Code Online (Sandbox Code Playgroud)
我希望敌人成为任何形式的单位.这是因为士兵应该能够攻击建筑物和其他地面单位,但我不希望士兵能够攻击飞行物体.
显而易见的问题是,因为我将敌人声明为一个单位,它不知道它属于哪个子类,因此试图找到一个不存在的单位的超级类.
我确信我可以为每个单位设置一个吸气剂,它可以手动设置它是什么类型的单位......但这是更多的工作,似乎并不高效.
我一直在研究使用rsync进行增量备份的备份脚本.
我已手动测试了以下rsync命令,它运行并完成备份而没有错误:
rsync -aAXv --delete --progress --link-dest=/backup/Uyuk/Uyuk-backup-part1/2014-02-24/ /mnt/backup/ /backup/Uyuk/Uyuk-backup-part1/2014-02-25/
Run Code Online (Sandbox Code Playgroud)
但是,当我在备份脚本中运行相同的命令时,它会给我以下错误:
rsync: -aAXv --delete --progress --link-dest=/backup/Uyuk/Uyuk-backup-part1/2014-02-24/ /mnt/backup/ /backup/Uyuk/Uyuk-backup-part1/2014-02-25/: unknown option
rsync error: syntax or usage error (code 1) at main.c(1422) [client=3.0.6]
Run Code Online (Sandbox Code Playgroud)
我在我的脚本上运行了bash -x来确定发送到控制台的确切内容,以下是打印的内容:
+ rsync '-aAXv --delete --progress --link-dest=/backup/Uyuk/Uyuk-backup-part1/2014-02-24/ /mnt/backup/ /backup/Uyuk/Uyuk-backup-part1/2014-02-25/'
Run Code Online (Sandbox Code Playgroud)
有谁看到有什么问题?我找不到任何会导致语法错误的东西.
编辑:这是我在脚本中的实际代码,这是一个非常大的脚本,所以是的,这里没有定义一些变量,但你明白了.
mkdir -p "/backup/$HOST/$NAME/$TODAY"
#source directory
SRC="$MNT"
#link directory
LNK="/backup/$HOST/$NAME/$LAST/"
#target directory
TRG="/backup/$HOST/$NAME/$TODAY/"
#rsync options
OPT1="-aAXv --delete --progress --link-dest=$LNK"
#run the rsync command
echo "rsync $OPT1 $SRC $TRG"
rsync "$OPT1 $SRC $TRG" > /var/log/backup/backup.rsync.log 2>&1
Run Code Online (Sandbox Code Playgroud)