gpt4 book ai didi

linux - 为什么 "find"命令在 shell 脚本中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:40 25 4
gpt4 key购买 nike

我遇到的问题是,在命令级别给出的 find 命令按预期工作;但是当从脚本执行相同的命令时,它不会。

当我在提示符处输入此代码时,它会起作用:

find . -name *\20191202.bin -print

结果是:

./IM/history_20191202.bin
./BAL/detail_20191202.bin
./REC/imbalance_20191202.bin
./DE/chart_20191202.bin
./FA/cases_20191202.bin

我可以得到你所看到的结果。

但是如果我运行包含相同命令的 bash 文件,它不起作用:

#!/bin/bash
read number1
read number2

echo "HELLO SHELL"

START=$(date --date=$number1 +"%Y%m%d")
END=$(date --date=$number2 +"%Y%m%d")
CURRENT="$START"

#echo `date -d "$CURRENT 1 day" +"%Y%m%d"`

while [ "$CURRENT" != "$END" ]; do
echo $CURRENT
find . -name *\$CURRENT.bin -print
#run shell job
CURRENT=`date -d "$CURRENT 1 day" +"%Y%m%d"`
done

上面是我的shell脚本代码。逻辑是,首先输入起始年份_月份_日期 = ex。 20191010,第二个输入去年的year_month_date = ex。 20191013,查找名称包含 20191010、20191011、20191012 的所有文件。

但是当我运行代码时,我得到了结果:

HELLO SHELL
20191013
20191014
20191015

如果有人知道如何得到正确的结果请教我;预期结果是:

./IM/history_20191013.bin
./BAL/detail_20191013.bin
./REC/imbalance_20191013.bin
./DE/chart_20191013.bin
./FA/cases_20191013.bin
./IM/history_20191014.bin
./BAL/detail_20191014.bin
./REC/imbalance_20191014.bin
./DE/chart_20191014.bin
./FA/cases_20191014.bin
./IM/history_20191015.bin
./BAL/detail_20191015.bin
./REC/imbalance_20191015.bin
./DE/chart_20191015.bin
./FA/cases_20191015.bin

最佳答案

在脚本中执行此命令:

find . -name *\$CURRENT.bin -print

应该是

find . -name "*${CURRENT}.bin" -print

匹配诸如cases_20191015.bin之类的名称

关于linux - 为什么 "find"命令在 shell 脚本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com