Псевдонимы доступны только в сеансе, в котором они определены (поскольку они предназначены для интерактивного использования), поэтому Octave их не увидит.
Вместо этого я бы рекомендовал указать полный путь к ltspice
в вызове system()
.
Я нашел его. Извини, мне нравится грязный перл ....
`echo \'@_\' >/tmp/curl`;
Спасибо, что напомнили мне, Ракеш Шарма. Я меняю код на этот.
push @_, 'that "is"you\'ok.';
for(@_){s/'/"/g;}; `echo \'@_\' >/tmp/curl`;
О боже, нет. То, что вы делаете с обратными кавычками, - это создание оболочки только для того, чтобы напечатать что-то в файл. Как вы заметили, специальные символы вызывают проблемы и позволяют вводить команды . Теоретически вы можете избежать всего, что оболочка считает особым, но это раздражает.
Просто используйте соответствующие функции обработки файлов и создайте функцию, содержащую все шаги:
sub dumptofile($@) {
my $file = shift;
if (open F, ">", $file) {
print F @_;
close F;
} else {
warn "Can't open $file: $!"
}
}
dumptofile("/tmp/curl", "some output\n");
Теперь, если вы не хотите вводить все это, вы можете сократить это до чего-то более уродливого, игнорируя проверку ошибок и все такое ( как в моей первой версии). Или сохраните полную версию в модуле и поместите ее куда-нибудь в путь включения вашего Perl (см. perl -I
).
# Dumptofile.pm
package Dumptofile;
use strict;
use warnings;
use Exporter qw/import/;
our @EXPORT = qw/dumptofile/;
sub dumptofile($@) {
my $file = shift;
if (open my $fh, ">", $file) {
print $fh @_;
close $fh;
} else {
warn "Can't open $file: $!"
}
}
1;
использовать:
perl -MDumptofile -e 'dumptofile("out.txt", "blahblah");