了解脚本以检查文件是否存在

时间:2013-03-29 13:17:56

标签: bash file unix

我有以下命令检查文件是否存在,如果不可用则创建它:

if test "${LOG_FILE:=}x" != "x"; then
    touch $LOGAP
    exit_code=$?
fi

请帮助我理解这个脚本,如何使用测试条件"${LOG_FILE:=}x" != "x"来检查是否有exixts。我正在使用bash shell。

1 个答案:

答案 0 :(得分:4)

基本理念
该脚本检查是否设置了$LOG_FILE变量。如果是,则触摸名称存储在$LOGAP

中的文件

<强>解释
我们分开吧:

test == if

所以

if test "${LOG_FILE:=}x" != "x"; then

相同
if [ "${LOG_FILE:=}x" != "x" ]; then

我们做一个测试:

LOG_FILE="FILE_TEST"
echo "${LOG_FILE:=}x"

将输出

FILE_TESTx

所以它做的是检查变量LOG_FILE是否被设置。如果已设置,

[ "${LOG_FILE:=}x" != "x" ]

将是

[ "FILE_TESTx" != "x" ]

这是真的。

如果未设置LOG_FILE

[ "${LOG_FILE:=}x" != "x" ]

将是

[ "x" != "x" ]

这是假的。

也就是说x是开始的。您可以将其更改为

[ "${LOG_FILE:=}HELLO_MY_NAME_IS_BLABLA" != "HELLO_MY_NAME_IS_BLABLA" ]

最后,你有一个

touch $LOGAP

touch(如果未创建则创建文件,如果已存在则更新修改日期)。它还需要设置变量$LOGAP


不得不说检查文件是否存在的最快方法是:

if [ ! -f /tmp/foo.txt ]; then
 ...
fi