此脚本在第一次运行时失败,但在第二次使用相同的output_dir参数运行时成功。
$output_dir
是用户传入的参数,例如“/ home / user / mydir”。
失败的行:
open(StepOne, ">$output_dir/Step_One_Create_Resources.sh");
操作系统是Ubuntu 12.04
这似乎是权限问题,但我是以root身份运行脚本。
答案 0 :(得分:1)
是的,当你第一次调用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!
答案 1 :(得分:0)
我发现导致此问题的原因。当一个不存在的目录作为输出目录传入时,该脚本将创建该目录,但它无法在该位置打开文件。当输出目录已存在时,脚本运行正常。