shell問題總結(一):if之組合判斷以及判斷文件是否存在
阿新 • • 發佈:2018-08-16
單引號 系列 空格 菜鳥 man 表達 遠程 www href
shell問題總結,這一系列都是我作為菜鳥在工作過程中遇到問題解決的過程,希望記錄下來對新學者有幫助。
需求:要解決遠程服務器中一個文件是否存在
1、判斷一個文件是否存在一般形式是
if [ -f filename ] #這裏有-e 和-f的區別,參考鏈接1
這裏的filename最好是絕對路徑,這點在判斷遠程服務器中文件是否存在時尤為重要。
2、鏈接遠程服務器,使用ssh
如寫為: if [ ssh root@${ip} -f filename ]這種形式,就會報如下的錯:
[: too many arguments
3、改進,只需將上述判斷改為 if [ “ssh root@${ip} -f filename” ]就好。
這裏有幾點值得註意的是:
1)if判斷中"["以及" ]"與表達式是均有一個空格的;
2)在上述第三點中,不能講雙引號改為單引號,因為雙引號能保留$這個字符的特殊功能,而單引號只將其作為字符
此外,關於if中組合判斷,我就不說了,見鏈接2
關於遠程服務器中文件是否存在,還有別的寫法,參見
Ref:
https://blog.csdn.net/thumbcs/article/details/81303258
shell問題總結(一):if之組合判斷以及判斷文件是否存在