我有以下命令检查文件是否存在,如果不可用则创建它:
if test "${LOG_FILE:=}x" != "x"; then
touch $LOGAP
exit_code=$?
fi
请帮助我理解这个脚本,如何使用测试条件"${LOG_FILE:=}x" != "x"
来检查是否有exixts。我正在使用bash shell。
答案 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