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