$ cat test.pl
my $pid = 5892;
my $not = system("top -H -p $pid -n 1 | grep myprocess | wc -l");
print "not = $not\n";
$ perl test.pl
11
not = 0
$
Run Code Online (Sandbox Code Playgroud)
我想将结果捕获11到变量中.我怎样才能做到这一点?
我有一个shell脚本,在几个目录(fgit)中运行相同的命令.对于每个目录,我希望它显示当前提示+将在那里运行的命令.如何获得与解码(扩展)对应的字符串PS1?例如,我的默认PS1是
${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[1;34m\]\w\[\e[0m\]$(__git_ps1 ' (%s)')$
Run Code Online (Sandbox Code Playgroud)
我想回应最终的提示username@hostname:/path$,最好(但不一定)用漂亮的颜色.粗略地看一下Bash手册没有透露任何明确的答案,echo -e $PS1只评估颜色.
我有一个shell脚本,非常大.现在我的老板说我必须用Perl重写它.有没有办法编写Perl脚本并使用现有的shell代码,就像在我的Perl脚本中一样.类似于Inline :: C的东西.
是否有像Inline :: Shell这样的东西?我看了一下内联模块,但它只支持语言.
问题很简单.我想评估PS1我的bash脚本中的当前值.
谷歌上的所有材料都指向了拉皮条的教程,但我想评估一下它将如何由我当前的终端呈现,或者至少由某个终端呈现.
是否有任何软/功能可以帮助我实现这一目标?当然我想要评估所有转义字符,所以echo $PS1在我的情况下这不是很有用.
我们可以在 perl 脚本中获取 shell 脚本吗?
示例: 方案 1:
cat test1.sh
#!/bin/ksh
DATE=/bin/date
Run Code Online (Sandbox Code Playgroud)
方案2:
cat test2.sh
#!/bin/ksh
. ./test1.sh
echo `$DATE`
Run Code Online (Sandbox Code Playgroud)
方案3:
cat test3.pl
#!/usr/bin/perl
### here I need to source the test1.sh script
print `$DATE`'
Run Code Online (Sandbox Code Playgroud)
如何在 perl 中获取 shell 以便在执行 test3.pl 时打印日期
谢谢拉古
我正在尝试source从Perl脚本(script.pl)编写脚本.
system ("source /some/generic/script");
Run Code Online (Sandbox Code Playgroud)
请注意,此通用脚本可以是shell,python或任何其他脚本.此外,我无法将此通用脚本中的逻辑复制到我的Perl脚本中.我试着替换system`` exec,和qx//.每次我收到以下错误:
不能执行"source":script.pl第18行没有这样的文件或目录.
我在互联网上遇到了很多论坛,讨论了这个问题的各种原因.但他们都没有提供解决方案.有没有办法source从Perl脚本运行/执行命令?