1. 程式人生 > >shell問題總結(一):if之組合判斷以及判斷文件是否存在

shell問題總結(一):if之組合判斷以及判斷文件是否存在

單引號 系列 空格 菜鳥 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之組合判斷以及判斷文件是否存在