echo $()でbashスクリプト呼び出しをラップすると、非常に奇妙な状況が発生します。これは奇妙なことで、どのコードを提示すればよいかわからないので、一般的な状況について説明します。「run.sh」と呼ぶスクリプトがあり、出力があります。これは通常、空白と改行を使用して、非常に適切にフォーマットされています。
この出力を、以前に一度実行したときに取得した値と比較しようとしています。これを行うために、コードは、これら2つが同じであるかどうかを確認することにより、「新しい」値と古い値を比較します。
expression=$(./runProcess.sh "$process");
expected=$(cat UnitTests/expect-process-$process);
if [ "$expression" == "$expected" ]; then
明らかに、将来のテストと比較するために「古い」の値を取得するには、$(./runProcess.sh)
手動で計算する必要があります。これを行うと、空白が大幅に少ないバージョンの出力が得られます。ls
しかし、その真ん中に中身が出てくるので、明らかに間違っています。つまり、これら2つのコマンドを実行すると次のタイプの出力が得られます。
./runProcess.sh g,g:
R2With2Gluons =
+ ncol*i_*pi_^2*A*g^2 * (
- 17/24*d_(mu1,mu2)*d_(m1,m2)*p1.p1
- 31/8*d_(mu1,mu2)*d_(m1,m2)*p1.p2
- 17/24*d_(mu1,mu2)*d_(m1,m2)*p2.p2
+ 7/12*d_(m1,m2)*p1(mu1)*p1(mu2)
+ 1/24*d_(m1,m2)*p1(mu1)*p2(mu2)
+ 89/24*d_(m1,m2)*p1(mu2)*p2(mu1)
+ 7/12*d_(m1,m2)*p2(mu1)*p2(mu2)
);
0.01 sec out of 0.01 sec
echo $(./runProcess.sh g,g):
R2With3Gluons = + coeff(m1,m2,m3)*ncol*pi_^2*A*g^3 Auto Diagrams UnitTests colourCalc.frm form.set functions.frm output.frm process.frm process.mid qgraf2form.frm qgrafProcessor.py runProcess.sh runProcesses.sh test vertices.frm ( + 35/24*d_(mu1,mu2)*p1(mu3) - 35/24*d_(mu1,mu2)*p2(mu3) - 35/24*d_(mu1,mu3)*p1(mu2) + 35/24*d_(mu1,mu3)*p3(mu2) + 35/24*d_(mu2,mu3)*p2(mu1) - 35/24*d_(mu2,mu3)*p3(mu1) ); 0.40 sec out of 0.40 sec
そしてここにlsがあります:
ls:
Auto form.set process.mid runProcesses.sh
Diagrams functions.frm qgraf2form.frm test
UnitTests output.frm qgrafProcessor.py vertices.frm
colourCalc.frm process.frm runProcess.sh
必要に応じて正確な例を提供できますが、これが十分に明らかになっていることを願っています。なぜこれが起こっているのでしょうか?OS XMountainLionでbashを使用しています。