用于检查传入变量和删除文件的Shell脚本

问题描述 投票:0回答:1

我正在尝试编写shell脚本来检查和删除文件/文件夹

#!/bin/bash

deletepath="path"
donotdelete="$2"

timestamp=$(date +%Y%m%d_%H%M%S)
filename=log_$timestamp.txt

logpath="logpath.txt"

find "$deletepath" -maxdepth 5 -exec sh -c '
for dir; do

    # Log the mtime and the directory name
    stat -c "%y %n" "$dir" >> "$logpath"

    if [ "$donotdelete" = "false" ]; then
        echo "deleting files"
    fi

done
' sh {} +

我的 2 条线路有问题

stat -c "%y %n" "$dir" >> "$logpath" 

由于某种原因,$logpath 未被替换,并且显示权限错误。

if 条件不起作用,并且始终打印 deleting files。非常感谢您的帮助。

linux shell sh
1个回答
0
投票

您的两个问题都有相同的原因:您没有将变量

logpath
donotdelete
传递到需要使用它们的
sh
的副本中。

使用

export
将 shell 变量复制到环境中,子进程可以使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.