我已经从网上删除了一个用于我的bash脚本的perl片段,并且由于原因太长而无法进入,如果我能够直接在bash中实现它的目的,那将会更好。
这是脚本:
bash stuff
...
perl <<'EOF'
use 5.006;
use strict;
use warnings;
if (! can_run("ldconfig")) {
die "you need to have ldconfig in your PATH env to proceed.\n";
}
# check if we can run some command
sub can_run {
my ($cmd) = @_;
#warn "can run: @_\n";
my $_cmd = $cmd;
return $_cmd if -x $_cmd;
return undef;
EOF
more bash stuff
基本上,问题可以改为:“如何使用bash检查ldconfig是否在PATH环境中?”
答案 0 :(得分:5)
你想要bash的内置type
命令:
if type -P ldconfig; then
echo "ldconfig is in the PATH"
else
echo "ldconfig is not in the PATH"
fi
表示消极:
if ! type -P ldconfig; then
echo "ldconfig is not in the PATH"
fi
答案 1 :(得分:3)
更直接的解决方案是调用shell和which
命令:
$path = `which ldconfig`;
if ($path) {
...
}
如果识别出ldconfig
,将返回其可执行文件的路径,否则返回空输出。
或者,如果这个Perl脚本不会做更多的事情,你可以解雇它并从bash执行相同的命令。
答案 2 :(得分:0)
我精炼了@glenn jackman的答案,让它“安静”。它按原样工作,但除了路径中的echo之外,它还向屏幕输出“/ sbin / ldconfig”。通过此修改,仅输出回声:
type ldconfig &>/dev/null
if [ "$?" -eq 0 ]
then
echo "ldconfig is in the PATH"
else
echo "ldconfig is not in the PATH"
fi
感谢所有人。