bash - 脚本出于未知原因创建文件
问题描述
我写了一个脚本,它应该检查文件是否写在特定的文件夹中。由于未知原因,此脚本还在每个文件夹中创建了一个名为“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 语句总是被填满。
提前致谢,
英戈
解决方案
if [ $iDatei > 0 ]
不是有效的用途test
,你应该写if [ $iDatei -gt 0 ]
您在这里所做的是$iDatei > 0
,这称为重定向,并将创建一个以0
输出命名的文件$iDatei
推荐阅读
- reactjs - 当用户修改数据时,mutate 会导致 react-table 错误:不是函数
- ruby-on-rails - Ruby on Rails 变量在视图中显示 Active Record 数据而不是整数
- node.js - 如何在 NodeJS 中将 createReadStream 转换为缓冲区?
- r - 如何排列折线图和点图的值
- c# - 将父表单上的文本框值传递给子表单
- bash - FFmpeg 无法就地编辑现有文件。Windows 上的 Bash 脚本
- python - 如何从 html 输出中的 Pandas 数据框列 'Time' 中的 'hh:mm:00' 中删除 ':00'?
- sql - 用以前的记录替换所有列的空值
- python - Matplotlib 3D plot:设置正确的纵横比
- html - 字幕文本不居中出现问题,右侧显示绿条