在 echo $() 中包装 bash 脚本调用时,我遇到了一个非常奇怪的情况。这很奇怪,我不知道要呈现什么代码,所以我将描述一般情况。我有一个脚本,我们称之为“run.sh”,它有一些输出。这通常格式化得很好,带有空格和换行符。
我正在尝试将此输出与我之前运行一次时得到的值进行比较。为此,代码通过检查这两个值是否相同,将“新”值与旧值进行比较,即:
expression=$(./runProcess.sh "$process");
expected=$(cat UnitTests/expect-process-$process);
if [ "$expression" == "$expected" ]; then
显然,要获得“旧”值以与我需要$(./runProcess.sh)
手动计算的未来测试进行比较。当我这样做时,我会得到一个空白明显更少的输出版本。然而它显然是错误的,因为它的内容ls
出现在它的中间。我的意思是我得到以下类型的运行这两个命令的输出:
./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 X Mountain Lion 上使用 bash。