2014-10-01 100 views
0

我正在嘗試編寫一個shell腳本來檢查文件夾中是否存在3個特定文件。我也想將結果存儲在一個數組中。一旦文件檢查完成,我想檢查數組以確保在腳本可以繼續之前至少有一個(1)文件存在。Shell腳本 - 檢查文件是否存在

一個成功的輸出應該是這樣的:

File file1.sh..........OK! 
File file2.sh..........NOT FOUND! 
File file3.sh..........OK! 
File check completed successfully. 

失敗的輸出應該是這樣的:

File file1.sh..........NOT FOUND! 
File file2.sh..........NOT FOUND! 
File file3.sh..........NOT FOUND! 
At least one file is required to continue. 

現在我使用if/else語句是這樣的:

#!/bin/bash 
if [[ -f file1.sh ]]; then 
    echo "File file1.sh........OK!"; 
    isFILE1=1 
else 
    echo "File file1.sh........NOT FOUND!"; 
    isFILE1=0 
fi 

但是,我想要這樣做,而不是。並且還可以使打印在同一行作爲文件file1.sh結果.......:

#!/bin/bash 
echo "File file1.sh........."; 
if [[ -f file1.sh ]]; then 
    echo "OK!"; 
    isFile[0]=1; 
else 
    echo "NOT FOUND!"; 
    isFile[0]=0; 
fi 

我不知道如何檢查至少1文件中的數組中ISFILE存在。

+3

在開頭設置一個標誌:'some_file_found = 0'。在'[-f「$ file」]'中加入'some_file_found = 1',最後檢查這個值。 – fedorqui 2014-10-01 16:00:19

+0

解決了是否至少有一個文件存在。謝謝! – Mark 2014-10-01 16:18:25

回答

2

爲了保持在一行輸出改變這種

echo "File file1.sh........."; 

echo -n "File file1.sh........."; 

-n抑制新線。

若要檢查數組中的文件存在,請使用單個標誌,並在找到文件時將其更改爲1

+0

我知道printf比使用POSIX標準的echo更好用。另外,當使用echo -n或printf時,它似乎在輸出之前打印出我正在運行的shell文件的名稱。無論如何,我可以壓制它嗎? – Mark 2014-10-01 16:17:25

+1

@Mark echo或printf沒有這樣做,除非您已經將shell文件的名稱添加到echo或printf中。 – 2014-10-01 16:19:25

+0

我沒有專門添加它。它可能是.bash_profile中的設置嗎?我的輸出是:./program.sh文件file.sh ......好的 – Mark 2014-10-01 17:43:15

相關問題