В рамках моего сценария bash я занимаюсь оптимизацией некоторой функции, которая принимает входные файлы csv и обрабатывает их с помощью некоторого сценария AWK. Это функция, которая работает с входными файлами:
rescore_data () {
# accepting $str file(s) given outside the function in bash
echo "DEBUG info: The following CSV file is being processed:" $str
str_name=$(basename ${str} .csv)
printf >&2 "Dataset for ${str_name} is being rescored... "; sleep 0.1
mkdir ${rescore}/${str_name}
# applying this AWK code on many directories, each of which contains target csv file(s)
while read -r d; do
awk -F ", *" '# SOME AWK CODE and save output inside the same directory (d)
' "${d}_"*/${str} > "${rescore}/${str_name}/"${d%%_*}".csv"
done
}
И это поток управления, как эта функция может быть вызвана внутри сценария bash в соответствии с двумя различными условиями, определенными вручную (1 — работа только с одним файлом; 2 — цикл по нескольким файлам из списка и обработка каждого функцией):
# list of target CSV filles
strategies=('*str1.csv' '*str2.csv' '*str3a.csv' '*str3b.csv')
if [[ "${MY_FILT_METHOD}" == 1 ]]; then
# this is a target file present in each of the directories
str="*str1.csv"
# run rescore_data function to process it
rescore_data
elif [[ "${MY_FILT_METHOD}" == 0 ]]; then
# in each dir there are several target filles, defined in the array list
for str in ${strategies[@]}; do
rescore_data
done
else
echo "GREAT NEWS: when you see this message, you code is wrong!"
fi
Можно ли изменить этот рабочий процесс для автоматического определения переменной $ str внутри функции в соответствии с той же переменной, которая указана в части условий IF потока управления?