首页 > 解决方案 > 脚本出于未知原因创建文件

问题描述

我写了一个脚本,它应该检查文件是否写在特定的文件夹中。由于未知原因,此脚本还在每个文件夹中创建了一个名为“0”的文件。有谁知道,为什么会这样?

sFolders=$(ls -d /opt/sftp/pharmatest/*/*/uploaded/)
declare -a sUploaded=()
declare -a dirs=($sFolders)

for i in "${dirs[@]}"; do
        declare -i iDatei=$(ls $i | wc -l)
        if [ $iDatei > 0 ]
        then
                sUploaded=(${sUploaded[@]} $i)
        fi
done;

printf '%s\n' "${sUploaded[@]}" >> /opt/sftp/pharmatest/logfile.log

我的猜测是,“declare -i iDatei=$(ls $i | wc -l)”正在创建它们,因为即使我删除了目录中的所有文件(应该由脚本检查),日志文件的输出总是包含被检查的每个文件夹,因此 if 语句总是被填满。

提前致谢,

英戈

标签: bashfilewc

解决方案


if [ $iDatei > 0 ]不是有效的用途test,你应该写if [ $iDatei -gt 0 ]

您在这里所做的是$iDatei > 0,这称为重定向,并将创建一个以0输出命名的文件$iDatei


推荐阅读