如果bool语句带功能

时间:2015-04-21 07:23:15

标签: shell unix

我试图编写一个具有if语句的函数,该语句使用原始函数的变量和另一个函数。我想仅在传入的目录实际包含文档时移动文档:

documentCheck() {
   if [ "$(ls -A ./$1)" ]; then
      return 0   # found documents
   else
      return 1   # did not find documents
   fi
}

moveFiles() {
   if [ documentCheck $1 ]; then
      mv ./$1/* ~/Desktop
   else
      echo "$1 does not contain documents."
   fi
}

moveFiles Inbox
moveFiles Archive

理想情况下,我试图让我的moveFile函数只移动文件,如果它能够验证文件夹包含文档,因为我最终会有一些单独的函数需要验证文件夹中是否存在文件。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

使用-z测试为空,不要引用条件测试的全部内容。 E.g:

if [ -z "$(ls -A "$1")" ]; then
    echo "$1 -- has no files"
else
    echo "$1 -- has files"

答案 1 :(得分:1)

您可以执行以下操作:

documentCheck() {
   if [ "$(ls -A ./$1)" ]; then
      true   # found documents
   else
      false   # did not find documents
   fi
}

moveFiles() {
   documentCheck $1 && mv ./$1/* ~/Desktop || echo "$1 does not contain  documents."
}

moveFiles Inbox
moveFiles Archive