我遇到的问题是,在命令级别给出的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脚本代码。逻辑是 首先输入起始year_month_date = 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
答案 0 :(得分:1)
在脚本中,此命令:
find . -name *\$CURRENT.bin -print
应该是
find . -name "*${CURRENT}.bin" -print
匹配cases_20191015.bin
之类的名称