2013-01-08 70 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