почему команда "find" не работает в сценарии оболочки - PullRequest
0 голосов
/ 06 ноября 2019

У меня проблема в том, что команда 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

Выше таммой код сценария оболочкиЛогика заключается в том, чтобы сначала поставить начало 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

1 Ответ

1 голос
/ 06 ноября 2019

В скрипте эта команда:

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

должно быть

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

, чтобы соответствовать именам вроде cases_20191015.bin

...