此脚本在第一次运行时失败,但在第二次使用相同的 output_dir 参数运行时成功。
$output_dir
是用户传入的参数,例如“/home/user/mydir”。
失败线:
open(StepOne, ">$output_dir/Step_One_Create_Resources.sh");
操作系统是 Ubuntu 12.04
这似乎是一个权限问题,但我以 root 身份运行脚本。
是的,也许当您第一次调用 open(StepOne, ">$output_dir/Step_One_Create_Resources.sh") 时,$output_dir 并不存在。所以,我强烈建议您等到目录创建完成。
do{
}while(!(-e $output_dir));
open(StepOne, ">$output_dir/Step_One_Create_Resources.sh") or die $!;
这将确保您在实际创建 output_dir 之后打开 output_dir!
我发现是什么导致了这个问题。当一个不存在的目录作为输出目录传入时,脚本将创建该目录,但无法在该位置打开文件。当输出目录已经存在时,脚本运行良好。