После команды find.find -iname не работает в скрипте
find Work/Linux4/test/test/test_goal/spyglass_reports/clock-reset/Ac_coherency06/ -iname "Ac_coherency*.csv"
работает нормально при работе на раковине. Но в perl-скрипте он ничего не возвращает.
#!/bin/bash
REPORT_DIR=$1
FIND_CMD=$2
echo "@@";
echo $REPORT_DIR ;
echo $FIND_CMD ;
LIST_OF_CSV=$(find $REPORT_DIR $FIND_CMD)
echo $LIST_OF_CSV
if [ "X" == "X${LIST_OF_CSV}" ]; then
echo "No files Found for : '$FIND_CMD' in directory ";
echo " '$REPORT_DIR' " | sed -e 's;Work/.*/test_reports;Work/PLATFORM/test_reports;g';
echo;
exit 0;
fi
Выход сценария:
@@
Work/$PLATFORM_SPECIES/test_reports/clock-reset/Ac_coherency06 -iname "Ac_coherency06*.csv"
No files Found for : '-iname "Ac_coherency06*.csv"' in directory 'Work/PLATFORM/test_reports/clock-reset/Ac_coherency06'
Вы используете относительный путь, выполняете ли вы скрипт из хорошего места?Кроме того, попробуйте запустить с помощью 'set -x', чтобы увидеть, действительно ли ваша команда действительно расширяет переменные так, как вы хотите - частое сохранение кода в переменных часто не работает так, как ожидают люди (см. Http://mywiki.wooledge.org/BashFAQ/050) –
Кажется, вы передаете один аргумент вашему сценарию, заключенному в одинарные кавычки, что-то вроде './myscript 'Work/$ PLATFORM_SPECIES/test_reports/clock-reset/Ac_coherency06 -iname" Ac_coherency06 * .csv " «'. Это не сработает: после разделения слов (и, надеюсь, нет файлов, соответствующих вашему glob), 'find' увидит три аргумента' Work/$ PLATFORM_SPECIES/test_reports/clock-reset/Ac_coherency06', '-iname' и '' Ac_coherency06 * .csv "' с кавычками: указанный каталог (скорее всего) не существует, и даже если он существует, нет файлов, соответствующих из-за кавычек. –
Ну, на самом деле вы, вероятно, передаете два аргумента как «./myscript» Work/$ PLATFORM_SPECIES/test_reports/clock-reset/Ac_coherenc y06 '' -iname "Ac_coherency06 * .csv" '(есть несоответствие с вашим скрипт и вывод, который вы нам даете), но в любом случае это неправильно. –