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 "のような一重引用符で囲まれた1つの引数を渡しているようです。 ''。これはうまくいきません:単語の分割後(うまくいけばあなたのグロブに一致するファイルがないことを願って)、 'find'は' Work/$ PLATFORM_SPECIES/test_reports/clock-reset/Ac_coherency06'、 '-iname'、 '' Ac_coherency06 * .csv "' quotes:与えられたディレクトリは存在しません。存在していても、引用符のために一致するファイルはありません。 –
さて、実際には './myscript 'Work/$ PLATFORM_SPECIES/test_reports/clock-reset/Ac_coherenc y06' '--iname" Ac_coherency06 * .csv "''という2つの引数を渡している可能性があります。スクリプトとあなたが私たちに与える出力)...とにかくこれは間違っているプレーン。 –