我正在编写一个简单的Perl程序来测试shell脚本以更改目录。但它不起作用。
这是我的代码:
$result = `cd/`;
print $result;
使用
时效果很好$result =`dir`;
答案 0 :(得分:4)
如果您需要更改脚本中的cwd目录,则应使用Perl的内置chdir
功能。
perldoc -f chdir
答案 1 :(得分:3)
cd
(默认情况下)不输出任何内容,因此您要为您的$result
变量分配空字符串。< / p>
如果你想输出你改变的目录的(完整)路径,只需在反引号中附加&& pwd
:
$result = `cd / && pwd`;
请注意,`...`
创建了一个子进程,用于使用指定的命令运行shell,因此您在那里执行的任何环境更改(包括更改目录)都不会影响Perl脚本本身
换句话说:您不是用shell命令更改 Perl脚本的当前目录。
如果您的意图是:
简单测试您在`...`
中包含的shell命令是否成功 ,请使用{ {3}}而是; e.g:
system('cd /') == 0 || die "Command failed";
捕获 shell命令的输出,假设它是一个目录路径, system()
function 为它:
$result = `cd / && pwd` || die "Command failed.";
chomp $result; # trim trailing newline
# Change Perl script's working dir.
chdir $result || die "Could not change to $result.";
答案 2 :(得分:2)
要影响perl进程的当前工作目录,请使用chdir()函数。