我试图编写一个具有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函数只移动文件,如果它能够验证文件夹包含文档,因为我最终会有一些单独的函数需要验证文件夹中是否存在文件。
提前感谢您的帮助。
答案 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