bash使用-z检查空字符串/行

时间:2014-08-19 17:55:43

标签: linux bash

我对bash脚本编程比较陌生,而且我有以下脚本,它没有给我我期望的结果。所以,我的脚本看起来像这样:

#!/bin/bash

echo "Today is $(date)"
shopt -s nullglob

FILES=/some/empty/dir/with/no/text/files/*.txt
#echo $FILES


if [ -z "$FILES" ]
then
    echo 'FILES variable is empty'
    exit
else
    echo 'FILES variable is not empty'
    echo 'done' > write_file_out.dat
fi

因此,我尝试使用FILES的目录是完全空的 - 但是,当我if [ -z "$FILES" ]时,它似乎表示它不是空的。

对此感到困惑 - 想知道是否有人可以指出我正确的方向。

1 个答案:

答案 0 :(得分:5)

而不是:

FILES=/some/empty/dir/with/no/text/files/*.txt

您需要使用:

FILES="$(echo /some/empty/dir/with/no/text/files/*.txt)"

否则$FILES将设置为:/some/empty/dir/with/no/text/files/*.txt,此条件[ -z "$FILES" ]将始终为false(非空)。

您还可以使用BASH数组进行shell扩展:

FILES=(/some/empty/dir/with/no/text/files/*.txt)

并检查:

[[ ${#FILES[@]} == 0 ]]

进行空检查。