2013-01-08 68 views
1

我在這個網站上找到了一個關於如何檢查文件是否存在的代碼,然後添加了一些代碼來匹配我的想法。我是否正確?檢查文件是否存在

declare file="file.txt" 
declare regex=$skedtemp 
declare file_content=$(cat "${file}") 
if [[ " $file_content " =~ $regex ]] 
then 
    skedran=$((RANDOM%200+600)) 
    skedtemp="SN$skedran" 
    sked=$skedtemp 
else 
    sked=$skedtemp 
fi 

如果它已經存在,那麼它將生成另一個隨機數,如果它不存在,則會使用生成的數字。

回答

1

要測試是否存在的文件,你可以做到這一點

[ -a file.txt ] 

[ -e file.txt ] 

[ -f file.txt ] 

針對Jonathan Leffler’s comment

File operators: 

    -a FILE  True if file exists. 

ref

+0

嗯... OK,一些不同版本的......東西。 'man test' sayeth''EXPRESSION1 -a EXPRESSION2'_both EXPRESSION1 and EXPRESSION2 are true_'。這是在RHEL5上。 '男人bash'不會顯示你顯示的文字。然而,它並沒有說明整個故事:'bash -c'[-f file.txt -a! -L file.txt] && echo是||回聲否''具有'-a'作爲'和'運算符。所以,'-a'運算符似乎是......錯誤,多態?當已經存在足夠多的'-a'時,添加另一個'文件存在'操作符似乎很奇怪,'-a'已經有了含義。奇怪的!但是'bash'中的很多東西對我來說似乎很奇怪。 –

+0

@JonathanLeffler類似於'[$ foo]'和'[-n $ foo]' –

0

你可能尋找grep

file="file.txt" 
if grep "$skedtemp" $file 
then 
    skedran=$((RANDOM%200+600)) 
    skedtemp="SN$skedran" 
fi 
sked=$skedtemp