我对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" ]
时,它似乎表示它不是空的。
对此感到困惑 - 想知道是否有人可以指出我正确的方向。
答案 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 ]]
进行空检查。