Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line maxima命令行v5.43的行为与v5.41不同_Command Line_Version_Echo_Maxima_Suppression - Fatal编程技术网

Command line maxima命令行v5.43的行为与v5.41不同

Command line maxima命令行v5.43的行为与v5.41不同,command-line,version,echo,maxima,suppression,Command Line,Version,Echo,Maxima,Suppression,我最近将maxima从5.41.0升级到5.43.2,它打破了我的代码。我找不到一个在两个版本中都能以相同方式工作的解决方案。下面是我正在执行的简化命令行示例: 在版本5.41.0中: user@system:~> maxima -version Maxima 5.41.0 user@system:~> maxima --very-quiet -r 'display2d: false$ leftjust: true$ ratprint: false$ dispflag: false

我最近将maxima从5.41.0升级到5.43.2,它打破了我的代码。我找不到一个在两个版本中都能以相同方式工作的解决方案。下面是我正在执行的简化命令行示例:

在版本5.41.0中:

user@system:~> maxima -version
Maxima 5.41.0
user@system:~>  maxima --very-quiet -r 'display2d: false$ leftjust: true$ ratprint: false$ dispflag: false$      is(equal((a+b)**2 = (a**2 + b**2 + 2*a*b), (a+b)*(a+b) = (a**2 + b**2 + 2*a*b))); ttyoff:true$ quit()$'
true
user@system:~>
在版本5.43.2中:

user@system:~> maxima -version
Maxima 5.43.2
user@system:~>  maxima --very-quiet -r 'display2d: false$ leftjust: true$ ratprint: false$ dispflag: false$      is(equal((a+b)**2 = (a**2 + b**2 + 2*a*b), (a+b)*(a+b) = (a**2 + b**2 + 2*a*b))); ttyoff:true$ quit()$'
display2d:false
leftjust:true
ratprint:false
dispflag:false
is(equal((a+b)^2 = a^2+b^2+2*a*b,(a+b)*(a+b) = a^2+b^2+2*a*b))
true
ttyoff:true
有两个问题(1)v5.43.2中的命令没有在完成后退出maxima以返回shell命令提示符,其中与v5.41.0中一样,它退出maxima并返回shell命令提示符。(2) 因此,我添加了quit()$,但是命令的回音并没有被terminator$抑制


我试图阅读文档以找到任何关于这方面的信息,但没有看到任何明显的信息。我的目标是安静地执行传入的命令,并仅打印(最后一个)命令的输出。非常感谢您在这方面提供的任何帮助。

在查看Git日志时,似乎在提交FA979中更改了
--run string
(即
-r
)的行为。因此,目前的行为被认为是正确的。也就是说,对于地址(1),您可以尝试使用
--batch string
选项,而不是
--run string

关于(2),虽然美元符号抑制了输出,但输入仍然会产生回声,这就是您看到的。我也不知道抑制输入的方法。在这一点上,我可以看到一些可能的方法

一种是省略
——非常安静的
,这样就可以得到输入和输出标签。然后grep输出以获得输出标签,或者更准确地说,grep输出标签后接零行或多行没有标签的行(以捕获多行输出)

另一种方法是忘记标签,用stdout(“/tmp/foo.out”)说
,在那里打印(…)
,打印与以后处理相关的内容,然后只转储文件
/tmp/foo.out
,或者以后调用的任何东西。这有点笨拙,但可能更容易在输出文件中获得您想要的内容

我有时创建bash脚本,看起来像

cat << EOF > /tmp/foo.mac
someflag: true;
somevar: 1234;
foo: expand (something (something));
EOF
maxima --batch=/tmp/foo.mac
cat/tmp/foo.mac
someflag:对;
somevar:1234;
foo:扩展(某物);
EOF
maxima—批处理=/tmp/foo.mac
因此bash脚本创建Maxima程序,然后Maxima执行它。如果我想在Maxima程序中使用bash变量(例如文件名或其他),这尤其有用,例如

f=$1-$2.csv  # something I just made up
cat << EOF > /tmp/foo.mac
myinput: openr ("$f");
/* etc etc */
EOF
f=$1-$2.csv#我刚刚编的东西
cat/tmp/foo.mac
我的输入:openr($f);
/*等等*/
EOF

谢谢您提供的信息。我将能够使用这些信息来解决行为上的差异,并使两个版本的代码基础相同。