我想检查远程主机上是否存在某个文件。我试过这个:
$ if [ ssh user@localhost -p 19999 -e /home/user/Dropbox/path/Research_and_Development/Puffer_and_Traps/Repeaters_Network/UBC_LOGS/log1349544129.tar.bz2 ] then echo"okidoke"; else"not okay!" fi
-sh: syntax error: unexpected"else" (expecting"then")
您正在尝试执行该文件…
一般来说,在then之前需要一个分号:if cmd; then cmd; else cmd; fi。
除了上面的答案,还有一种速记方法:
ssh -q $HOST [[ -f $FILE_PATH ]] && echo"File exists" || echo"File does not exist";
-q是安静模式,它将抑制警告和消息。
正如@mat所提到的,这种测试的一个优点是,您可以很容易地将-f换成您喜欢的任何测试操作员:-nt、-d、-s等。
测试操作员:http://tldp.org/ldp/abs/html/fto.html
+1,但这假定接收主机具有bash,并且它是用户的默认shell。
我真的很喜欢你的解决方案。对于像我这样的新生来说,如果是其他版本:如果ssh-q$host[-f$file];那么echo"file exists";否则"fil